1.2.2 • Published 5 years ago
string-math v1.2.2
Description
string-math is a module (function) that computes the [Number] result from the [String] arithmetical formula.
- It does not use
eval() - It uses regular expressions to parse String formulas
"2+2"into Number formulas2+2. Then it is performed as the common JavaScript arithmetic operation.
"2 + 2" //4
"3*(5-2)" //9
" 2.5 * 2.5 / .1" //62.5
"3.5+5*(-4-(3/(3+1)-12*3-.2*22)-16/4*12-5/(2)+3.5+2.5*(1.5-2*7))-16" //-225.5
".25e+2*10" //250- Any bugs found? Give me to know on GitHub
- If you need to perform arithmetic formulas with the floating point precision (avoid
0.30000000000000004return values) or to perform arithmetic formulas with big numbers, check outexact-mathpackage. It implementsstring-mathfeatures as theexactMath.formulamethod.
Installation
with NodeJS / bundlers
npm install string-math
var stringMath = require('string-math');
stringMath("--1") //1
stringMath("2/-2") //-1
stringMath("-5-5") //-10with Browser
1. Add string-math.js to the HTML file.
<head>
<script src="./string-math.js"></script>
</head>Any other dependencies are needed.
2. Use stringMath global Function from string-math.js.
var result = stringMath("2+2");Browser Support
| Chrome | Firefox | IE | Safari | Opera |
|---|---|---|---|---|
| yes | yes | yes | yes | yes |
Tests
> git clone https://github.com/devrafalko/string-math.git
> cd string-math
> npm install
> npm test
> npm test deep //displays error messagesUsage
stringMath(expression[,callback])
expression String
- the arithmetical formula
- it can contain:
[0-9]digits1.5,0.5or.5decimal fractions-5,-.4,-5.55negative values2e-2,.25e+12,-3e-10exponential notation values*multiplication sign/division sign+plus sign-subtraction sign(and)parentheses
callback Function (optional) (synchronous)
- by default, if the
callbackargument is omitted and theexpressionis of incorrect type or is invalid, theErrorobject isthrown. If thecallbackis defined, theErrorobject is passed through thecallbackfunction, rather than beingthrown. - if the Function
callbackargument is defined, it is called with the following arguments:
Return
If the math formula is of correct type and is valid, it returns the Number result. Otherwise it returns null.
Tips
- the arithmetic order of operations is respected:
- parentheses first
- then division and multiplication (from left to right)
- then addition and subtraction (from left to right)
- the multiplication sign can be omitted before parentheses;
4(2+1); equals to `4(2+1)`* - the following signs combinations are allowed:
2 * -2; equals to `2 (-2)`*2 / -2; equals to2 / (-2)+2 + 2; equals to2 + 22 + +2; equals to 2 + 2-2 - -2equals to-2 + 2-2 - +2equals to-2 - 2-2 + -2equals to-2 - 2
- the (multi)spaces between values, signs and parentheses are allowed:
2 + 22 + ( -2 - -2)2 + (+2 + +4 / -1)-.1 - -52 + 3e-5.25e+5 * -.25e-5
- the spaces are not allowed between:
- negative sign and value:
-2 - - 2 - period and digit in decimal fraction:
5 + . 3 - exponential notation formula:
.2 e-5,2e - 5,3e +10
- negative sign and value: