当该值 1212.3456789123 乘以 100 时,jQuery 显示 12.123456789123003 而不是 12.123456789123。
代码:
<p class="price">12.123456789123</p>
<button>Calculate</button>
$(':button').click(function () {
$('p.price').text(function (i, v) {
return v * 100;
});
this.disabled = true;
});
由于浮点值的不精确性质(这不是 JavaScript 的错误),您需要更具体,即:
$('p.price').text(function (i, v) {
return (v * 100).toFixed(10);
});
其中
.toFixed(10)
确定所需的分数大小。
JavaScript 在浮点数精度方面存在问题。
如果你想在 JS 中得到精确的结果,比如当你处理金钱时,你需要使用类似 BigDecimal
小数部分有 12 位数字,因此当 12.123456789123 乘以 100 时
1212.3456789123
不包含 12 位数字,因此它会填充剩余的数字。
这是一个舍入误差。不要使用浮点类型作为货币值;最好以最小的整数单位来定价。价格采用如此精确的单位是很不寻常的。如果您确实需要使用浮点类型,请使用
1e-12 * Math.round(1e14 * v)
。