乘以100后的值错误

时间:2014-02-11 05:03:16

标签: javascript

当此值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;
});

4 个答案:

答案 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)