Javascript 模运算给出错误的结果

标签 javascript modulo

<分区>

我的脚本计算产品的重量。整箱重量 25.2KG。每件重 4.2KG,整箱 6 件。

我正在检查 JavaScript if 框。

   alert(jsonData.total_weight  + ' % ' +  fullpackweight + ' = ' + jsonData.total_weight % fullpackweight);
if(jsonData.total_weight % fullpackweight == 0) {
    $('#fill_status').hide();
    $('#fill_status i').html('OK ' + jsonData.total_weight);
} else { 
    $('#fill_status').show();
    $('#fill_status i').html('NOT OK ' + jsonData.total_weight);
}

脚本顶部的警告框给出以下结果:

25.2 % 25.2 = 0
50.4 % 25.2 = 0
75.6 % 25.2 = 25.199999999999996 (WHY?)
100.8 % 25.2 = 0
126 % 25.2 = 3.552713678800501e-15 (WHY?)

谁能解释这种行为?

最佳答案

问题是您使用 float 而不是整数来取模。

75.6 % 25.2 = 25.199999999999996

但是

756 % 252 = 0

因此转换为整数(通过使用 *10)将解决您的问题。

检查这个

25.199999999999999 - 25.2

它会给你 0 :D

关于Javascript 模运算给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16709880/

相关文章:

javascript - 在 JavaScript 中合并两个对象 (NodeList) 数组

javascript - 使用 jquery/javascript 将带有下拉列表的 html 表导出到 CSV 文件

c - 为什么 (-1)%(unsigned int) 不同于 (-1)%(int) +(它用 uint 计算什么并且转换为 int 是一个很好的解决方案)

c++ - remquo 结果没有意义

algorithm - 用余数树计算许多余数

javascript - 卸下右侧和底部/右侧 handle

javascript - 如何将自定义属性传递给函数?

javascript - scrolltop 在 centos 上不起作用

c - 弗莱彻校验和 : Is a modulo-255 sum really the same as a one's complement sum

MySQL Case Select 未按预期运行