Possible Duplicate:
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.8999999999915.900000000001。为什么?

谢谢你的帮助。

最佳答案

您只需toFixed()即可打印出所需的小数位数:

var priceString = price.toFixed(2);


这将始终为您提供一个格式为小数点后两位的数字。

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

关于javascript - 为什么143.55等于javascript中的143.54999999999? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13168954/

10-12 12:27
查看更多