Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

string-math

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

string-math

Evaluates the result of the String arithmetical expression

  • 1.2.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6.1K
increased by69.61%
Maintainers
1
Weekly downloads
 
Created
Source

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] formulas 2+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.30000000000000004 return values) or to perform arithmetic formulas with big numbers, check out exact-math package. It implements string-math features as the exactMath.formula method.

Installation

with NodeJS / bundlers

npm install string-math

var stringMath = require('string-math');

stringMath("--1") //1
stringMath("2/-2") //-1
stringMath("-5-5") //-10
with 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
ChromeFirefoxIESafariOpera
yesyesyesyesyes

Tests

> git clone https://github.com/devrafalko/string-math.git
> cd string-math
> npm install
> npm test
> npm test deep //displays error messages

Usage

stringMath(expression[,callback])

expression [String]
  • the arithmetical formula
  • it can contain:
    • [0-9] digits
    • 1.5, 0.5 or .5 decimal fractions
    • -5, -.4, -5.55 negative values
    • 2e-2, .25e+12, -3e-10 exponential notation values
    • * multiplication sign
    • / division sign
    • + plus sign
    • - subtraction sign
    • ( and ) parentheses
callback [Function] (optional) (synchronous)
  • by default, if the callback argument is omitted and the expression is of incorrect type or is invalid, the Error object is thrown. If the callback is defined, the Error object is passed through the callback function, rather than being thrown.
  • if the [Function] callback argument is defined, it is called with the following arguments:
    • [0] error
      It equals null, if the expression is of correct type and is valid math formula.
      Otherwise it equals Error object.
    • [1] result
      It equals null if the expression is of incorrect type or if the math formula is invalid.
      Otherwise it equals [Number] result.

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 to 2 / (-2)
    • +2 + 2; equals to 2 + 2
    • 2 + +2; equals to 2 + 2
    • -2 - -2 equals to -2 + 2
    • -2 - +2 equals to -2 - 2
    • -2 + -2 equals to -2 - 2
  • the (multi)spaces between values, signs and parentheses are allowed:
    • 2 + 2
    • 2 + ( -2 - -2)
    • 2 + (+2 + +4 / -1)
    • -.1 - -5
    • 2 + 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

Keywords

FAQs

Package last updated on 18 Aug 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc