当此值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;
});
答案 0 :(得分:4)
由于浮点值的非精确性(这不是JavaScript的错误),您需要更具体,即:
$('p.price').text(function (i, v) {
return (v * 100).toFixed(10);
});
.toFixed(10)
确定所需分数的大小。
答案 1 :(得分:2)
JavaScript存在浮点数精度问题。
如果你想在JS中获得精确的结果,就像你在使用钱时一样,你需要使用像BigDecimal这样的东西
答案 2 :(得分:2)
十进制部分有12位数字,所以当12.123456789123乘以100 1212.3456789123
时,不包含12位数,所以它正在填充其余的数字。
答案 3 :(得分:1)
这是一个舍入错误。不要将浮点类型用于货币值;你最好的价格是最小的整体单位。让价格处于精确的单位是很不寻常的。如果您确实需要使用浮点类型,请使用1e-12 * Math.round(1e14 * v)
。