有什么办法可以解决这个问题吗?为什么Chrome浏览器将1.3 * 1.3评估为1.6900000000000002?
回答
因为浮点以二进制表示,而不是十进制。一些十进制数字不会精确表示。不幸的是,由于Javascript只有一个Number类,所以它不是一个很好的工具。其他语言有精心设计的十进制库,以避免这种错误。您将不得不接受1美分的错误,实施服务器端的解决方案,或者努力解决这个问题。
参见:
JavaScript floating point number problem
Binary representation of floating point number php/java (Server side)
您能否以浮点格式向我提供此1.3的二进制表示形式。也许不是像JavaScript一样,但也许在某种程度上,某些编程语言可以这样做,以便我可以看到在二进制表示中出现此问题的位置。 – 2014-10-16 15:46:01
请参阅:[如何获取二进制表示的浮点数](http://stackoverflow.com/questions/4729526/how-to-get-binary-representation-of-floatingpoint -number-in-php) – 2014-10-16 17:38:03
但是这个线程与php和java代码有关。 – 2014-10-16 17:44:00
因为javascript中的浮动(读取:双打)不是很准确,您可以将数字四舍五入以使用更少的小数来隐藏问题。一个非常黑客的做法是这样做:
var num = 1.3*1.3;
Math.round(num * 100)/100;
- 1. 为什么Chrome浏览器比Safari浏览器更快?
- 2. 为什么全局函数在角1.3
- 3. 为什么_ = $ = + [],++ _ +''+ $评估为10
- 4. 为什么Maven试图将我的代码编译为-source 1.3?
- 5. 为什么iPhone将Google Chrome视为Safari还将Mozilla Firefox视为Safari浏览器?
- 6. AssetCompress为CakePHP的1.3
- 7. 为什么在量角器中评估()?
- 8. 为什么在加载和评估`lib.js`之前,浏览器中的以下块?
- 9. Chrome认为它是IE浏览器,并且正在评估条件式
- 10. 为什么ActivationUri使用Chrome浏览器为空?
- 11. 为什么`as.logical(2)`评估为`TRUE`?
- 12. 为什么如果(无)评估为真?
- 13. 为什么“”<{}评估为真?
- 14. 为什么strtof总是评估为HUGE_VAL?
- 15. 为什么string> int评估为True?
- 16. 为什么+()=> {}评估为NaN?
- 17. 为什么Ruby包含?评估为零?
- 18. 为什么a =评估为零?
- 19. 为什么在VB.Net中评估为false?
- 20. 为什么list.append评估为false?
- 21. 为什么Chrome浏览器不像IE那么流畅?
- 22. 防止浏览器从评估%2F
- 23. 将jQueryMobile 1.4按钮设为1.3
- 24. 将playframework版本1.2.7设置为1.3
- 25. CakePHP的1.3 JsHelper为AjaxHelper
- 26. CakePHP 1.3替代SoftDeletable行为?
- 27. 窗口可以评估chrome下的文件,为什么?
- 28. 为什么javascript评论下载到浏览器?
- 29. 为什么浏览器正在评论我的PHP代码
- 30. Can可以在浏览器中打开SAP HANA Vora Manager 1.3
因为如何JavaScript的花车被定义的。这是所有的浏览器,因为它是一个JavaScript标准。 – devqon 2014-10-16 15:11:45
1.3不能将四舍五入转换为二进制数字系统 – 2014-10-16 15:13:12
您有什么情况会让您担心这个值? – musefan 2014-10-16 15:16:56