Package Exports
- string-math
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (string-math) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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:- [0]
error
It equalsnull, if theexpressionis of correct type and is valid math formula.
Otherwise it equalsErrorobject. - [1]
result
It equalsnullif theexpressionis of incorrect type or if the math formula is invalid.
Otherwise it equals [Number] result.
- [0]
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 to4*(2+1) - the following signs combinations are allowed:
2 * -2; equals to2 * (-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: