1

可能的重复:
JavaScript 的数学被破坏了吗?

我在 javascript 中运行了一些非常基本的函数来尝试将浮点数转换为货币。例如:

var t = Array(15.90, 15.95, 15.95);
var x = t[0];
if(x%1 == 0)
output += ".0";
if(x%.1 == 0)
output += "0";

输出应该 yield 0,但由于某种原因,在某些情况下,这不起作用,当我将 x 的值回显到控制台时,我会得到15.8999999999915.900000000001。为什么?

谢谢你的帮助。

4

1 回答 1

1

你可以只toFixed()打印出你想要的小数位数:

var priceString = price.toFixed(2);

这将始终为您提供格式化为两位小数的数字。

我知道这里很多人会告诉你不要使用浮点数进行基于货币的计算。但是,我发现浮点数的精度对于合理的美元金额来说绰绰有余。除非您将大量金额乘以很小的百分比,否则您不会丢失便士。例如:1000000 * .0000001 = .099999999

于 2012-10-31T23:41:41.423 回答