首页 > 解决方案 > 如何计算点后面两位小数的数字

问题描述

这是我的表格:

<input type="text" class="form-control amount" value="" placeholder="amount" />
<input type="hidden" class="price" value="3.30" />
<input type="text" class="form-control total" value="" disabled />

我的js:

$('.amount').on('keyup', function (e) {
    e.preventDefault();
    
    var amount = $('.amount').val(); 
    var total = Number(amount) * Number($('.price').val());
  
    $('.total').val(total);
});

如果我填写了 的数量3,则输入中的结果会total显示:9.899999999999999而不是19.80. (3 * 3.30 正好是 9.90)。

有人能解释一下为什么结果是点后面有这么多字符吗?

我知道我可以将结果减少到小数点后 2 位,.toFixed(2)但这并不能解释为什么一个值恰好 9.90变为9.899999999999999

小提琴

标签: javascriptjquery

解决方案


这是因为浮点数存储为二进制数字的方式。为了启用广泛的数字并仍然为每个数字在内存中保持合理的大小,结果的精度会有所牺牲。你可以在这里阅读更多关于https://stackoverflow.com/a/588014/3807365


推荐阅读