JSBI-CalculatorIE11 兼容的高精度四则运算 JS 库组件

联合创作 · 2023-09-22 01:21

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


该项目反哺GoogleChromeLabs/jsbi作出了不凡贡献。


安装


> npm install jsbi-calculator

示例


Showcase


用法



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>


浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报