File tree Expand file tree Collapse file tree 2 files changed +5
-2
lines changed
Expand file tree Collapse file tree 2 files changed +5
-2
lines changed Original file line number Diff line number Diff line change @@ -17,13 +17,16 @@ describe("Evaluate Numerical Expressions", () => {
1717
1818 it ( "Handle % for tax" , ( ) => {
1919 expect ( evalNumExpr ( "10+18%" ) ) . toBe ( 11.8 ) ;
20+ expect ( evalNumExpr ( "10+18.0%" ) ) . toBe ( 11.8 ) ;
21+ expect ( evalNumExpr ( "10-18.0%" ) ) . toBe ( 8.2 ) ;
2022 expect ( evalNumExpr ( "10+10+18%" ) ) . toBe ( 23.6 ) ;
2123 expect ( evalNumExpr ( "100+(10+10+18%)" ) ) . toBe ( 123.6 ) ;
2224 expect ( evalNumExpr ( "175 + 40 + 18%" ) ) . toBe ( 253.7 ) ;
2325 } ) ;
2426 it ( "Handle % for percentage" , ( ) => {
2527 expect ( evalNumExpr ( "2*5+6%2" ) ) . toBe ( 10.12 ) ; // 2 * 5 + 6/100 * 2
2628 expect ( evalNumExpr ( "10*6%" ) ) . toBe ( 0.6 ) ;
29+ expect ( evalNumExpr ( "20+20%%" ) ) . toBe ( 20.002 ) ;
2730 expect ( evalNumExpr ( "10 + 10*5%" ) ) . toBe ( 10.5 ) ;
2831 expect ( evalNumExpr ( "10 + (100 - 100 * 18%) * 5 + 40 / 20" ) ) . toBe ( 422 ) ;
2932 } ) ;
Original file line number Diff line number Diff line change @@ -193,8 +193,8 @@ function tokenize(
193193 . replace ( / \s / gi, "" ) // replace all spaces
194194 . replace ( / [ x X ] / gi, "*" ) // replace the x with multiplier *
195195 . replace ( / [ ^ + - / * ^ \d ( ) . % ] / g, "" )
196- . replace ( / \+ ( \d + ) % (? ! [ * / ( \d ] ) / gi, "add_percentage$1" )
197- . replace ( / - ( \d + ) % (? ! [ * / ( \d ] ) / gi, "sub_percentage$1" )
196+ . replace ( / \+ ( [ \d . ] + ) % (? ! [ * / % ( \d ] ) / gi, "add_percentage$1" )
197+ . replace ( / - ( [ \d . ] + ) % (? ! [ * / % ( \d ] ) / gi, "sub_percentage$1" )
198198 . replace ( / % ( [ \d ( ] ) / gi, "/100*$1" )
199199 . replace ( / % / gi, "/100" )
200200 // i have no idea why commas were not replaced :(
You can’t perform that action at this time.
0 commit comments