JSBI-Calculator





JSBI-Calculator是一个IE11兼容的计算器JS库组件,用于实现高精度(至少18位小数)大数值四则运算,基于由谷歌Chrome实验室出品的JSBI封装的BigDecimal。

该我的项目反哺GoogleChromeLabs/jsbi作出了不凡奉献。

我的项目地址:

https://github.com/Leslie-Wong-H/jsbi-calculator

装置

> npm install jsbi-calculator

示例

用法

ES6模块:
import JBC from "jsbi-calculator";const { calculator } = JBC;const expressionOne = "((10 * (24 / ((9 + 3) * (-2)))) + 17) + 5";const resultOne = calculator(expressionOne);console.log(resultOne);// -> '12'const max = String(Number.MAX_SAFE_INTEGER);console.log(max);// -> '9007199254740991'const expressionTwo = `${max} + 2`;const resultTwo = calculator(expressionTwo);console.log(resultTwo);// -> '9007199254740993'
Node CommonJS模块:
const JBC = require("jsbi-calculator");const { calculator } = JBC;const expressionOne = "((10 * (24 / ((9 + 3) * (-2)))) + 17) + 5";const resultOne = calculator(expressionOne);console.log(resultOne);// -> '12'const max = String(Number.MAX_SAFE_INTEGER);console.log(max);// -> '9007199254740991'const expressionTwo = `${max} + 2`;const resultTwo = calculator(expressionTwo);console.log(resultTwo);// -> '9007199254740993'
浏览器:
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta http-equiv="X-UA-Compatible" content="IE=edge" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <title>Jsbi-calculator Test</title>    <script src="https://cdn.jsdelivr.net/npm/jsbi-calculator/dist/jsbi-calculator-umd.js"></script>  </head>  <body></body>  <script type="text/javascript">    const expressionOne = "((10 * (24 / ((9 + 3) * (-2)))) + 17) + 5";    const resultOne = JBC.calculator(expressionOne);    console.log(resultOne);    // -> '12'    const userAgent = navigator.userAgent;    const isIE11 =      userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1;    let max;    // MAX_SAFE_INTEGER not available in IE11    max = isIE11 ? "9007199254740991" : String(Number.MAX_SAFE_INTEGER);    console.log(max);    // -> '9007199254740991'    const expressionTwo = max + " + 2";    const resultTwo = JBC.calculator(expressionTwo);    console.log(resultTwo);    // -> '9007199254740993'  </script></html>

留神

上面表格中的运算操作是有波及到的。请留神,正数须要以-结尾且须要用括号括起来,例如(-11),负数不能以+号结尾。

运算操作运算符号
加法+
减法-
乘法*
除法/
平方根JBC.BigDecimal.sqrt(num).toString()

致谢

我的项目开发失去了下列资源的灵感启发。

GoogleChromeLabs/jsbi

trincot's answer to BigDecimal in JavaScript

LeetCode150 - Evaluate Reverse Polish Notation

Parsing math expressions with JavaScript - FreeCodeCamp

天穹之下