JavaScript 中的金额计算通常涉及到浮点数的运算,但由于 JavaScript 使用 IEEE 754 标准来表示浮点数,这可能会导致精度问题。例如,0.1 + 0.2 并不精确等于 0.3。
问题:在进行金额计算时,结果出现不精确的情况。
原因:浮点数的二进制表示无法精确表示某些十进制小数,导致计算结果出现偏差。
function add(a, b) {
const amountInCents = (a * 100 + b * 100);
return amountInCents / 100;
}
console.log(add(0.1, 0.2)); // 输出 0.3
decimal.js
或 big.js
,这些库专门用于处理高精度的十进制数。const Decimal = require('decimal.js');
const a = new Decimal(0.1);
const b = new Decimal(0.2);
const sum = a.plus(b);
console.log(sum.toNumber()); // 输出 0.3
function roundToTwo(num) {
return +(Math.round(num + "e+2") + "e-2");
}
console.log(roundToTwo(0.1 + 0.2)); // 输出 0.3
通过上述方法,可以有效解决 JavaScript 中金额计算的精度问题,确保计算结果的准确性。
领取专属 10元无门槛券
手把手带您无忧上云