为什么143.55在javascript中等于143.54999999999?

时间:2012-10-31 23:37:21

标签: javascript math floating-point

  

可能重复:
  Is JavaScript’s Math broken?

我正在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";

输出应该产生0,但由于某种原因,在某些情况下,这不起作用,当我向控制台回显x的值时,我会得到15.89999999999或{ {1}}。为什么呢?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

var priceString = price.toFixed(2);

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

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