乘以100后的值错误[重复]

问题描述 投票:0回答:4

当该值 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 floating-point
4个回答
6
投票

由于浮点值的不精确性质(这不是 JavaScript 的错误),您需要更具体,即:

$('p.price').text(function (i, v) {
    return (v * 100).toFixed(10);
});

其中

.toFixed(10)
确定所需的分数大小。


2
投票

JavaScript 在浮点数精度方面存在问题。

如果你想在 JS 中得到精确的结果,比如当你处理金钱时,你需要使用类似 BigDecimal


2
投票

小数部分有 12 位数字,因此当 12.123456789123 乘以 100 时

1212.3456789123
不包含 12 位数字,因此它会填充剩余的数字。


1
投票

这是一个舍入误差。不要使用浮点类型作为货币值;最好以最小的整数单位来定价。价格采用如此精确的单位是很不寻常的。如果您确实需要使用浮点类型,请使用

1e-12 * Math.round(1e14 * v)

© www.soinside.com 2019 - 2024. All rights reserved.