2014-10-16 35 views

回答

0

因为浮点以二进制表示,而不是十进制。一些十进制数字不会精确表示。不幸的是,由于Javascript只有一个Number类,所以它不是一个很好的工具。其他语言有精心设计的十进制库,以避免这种错误。您将不得不接受1美分的错误,实施服务器端的解决方案,或者努力解决这个问题。

参见:

JavaScript floating point number problem

Binary representation of floating point number php/java (Server side)

+0

您能否以浮点格式向我提供此1.3的二进制表示形式。也许不是像JavaScript一样,但也许在某种程度上,某些编程语言可以这样做,以便我可以看到在二进制表示中出现此问题的位置。 – 2014-10-16 15:46:01

+0

请参阅:[如何获取二进制表示的浮点数](http://stackoverflow.com/questions/4729526/how-to-get-binary-representation-of-floatingpoint -number-in-php) – 2014-10-16 17:38:03

+0

但是这个线程与php和java代码有关。 – 2014-10-16 17:44:00

0

因为javascript中的浮动(读取:双打)不是很准确,您可以将数字四舍五入以使用更少的小数来隐藏问题。一个非常黑客的做法是这样做:

var num = 1.3*1.3; 
Math.round(num * 100)/100; 
相关问题