提问人:Nadine Schneider 提问时间:11/3/2023 更新时间:11/3/2023 访问量:57
为什么在某些情况下,将小数点后两位的值乘以 100 会产生十进制值而不是整数?在 JavaScript 中
Why, in some cases, does multiplying a value with two decimal places by 100 result in a decimal value rather than an integer? In JavaScript
问:
在某些情况下,当我将小数点后两位的值乘以 100 时,结果不是整数,而是小数点后有几位数字的十进制值。
我正在使用 JavaScript
例如,以下是我测试的一些计算来说明我的问题。我使用 Chrome 浏览器的控制台进行了测试。
100*4.98 = 498.000000000000006
100*4.89 = 488.999999999999994
100*4.77 = 476.999999999999994
100*4.61 = 461.000000000000006
100*4.55 = 455
100*4.88 = 488
100*4.76 = 476
100*4.02 = 401.999999999999994
100*4.01 = 401
如您所见,有些情况会产生整数值,我认为这是正确的。但是,其他任意值会导致小数。
有人可以解释为什么会发生这种情况,我该如何解决这个问题?
答:
0赞
Bob Martin
11/3/2023
#1
你应该使用 .toFixed()
var a = 0.0532;
var b = a * 100;
b.toFixed(2); //specify number of decimals to be displayed
为什么会发生这个问题,javascript 处理带有浮动十进制数的数字,因此 javascript 将 100 识别为 100.0000000000,将 4.98 识别为 4.98000000 .... 因此,当将它们相乘时,转换为二进制数并相乘并转换为十进制数。通过这些过程,可以减少进动。
祝你好运。
评论