手机登录/注册
X
登录
console.log(0.1+0.2);
结果是:0.30000000000000004
JavaScript 浮点数运算结果不对,是因为浮点数的存储问题导致计算结果不对。
Math.js是一个用于JavaScript和Node.js的扩展数学库。它具有支持符号计算的灵活表达式解析器,大量内置函数和常量,并提供了集成的解决方案来处理不同的数据类型,例如数字,大数,复数,分数,单位和矩阵,强大且易于使用。
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.bootcdn.net/ajax/libs/mathjs/8.1.0/math.min.js"></script>
</head>
<body>
<script>
const ans = math.add(0.1, 0.2); // 0.30000000000000004
console.log(
math.format(ans, {
precision: 14,
})
); // '0.3'
console.log(math.sqrt(4).toString()); // 2
</script>
</body>
</html>
npm i mathjs -S
let $math = require('mathjs');
export const math = {
//
add() {
return comp('add', arguments)
},
subtract() {
return comp('subtract', arguments)
},
multiply() {
return comp('multiply', arguments)
},
divide() {
return comp('divide', arguments)
},
}
function comp(_func, args) {
let t = $math.chain($math.bignumber(args[0]));
for (let i=1; i<args.length; i++) {
t = t[_func]($math.bignumber(args[i]))
}
// 防止超过6位使用科学计数法
return parseFloat(t.done())
}
// 可以传入多个参数
utils.math.add(0.1, 0.2, 0.5)