为什么在Chrome JavaScript中,1.3*1.3的评估值为16900000000000002
Why in Chrome JavaScript evaluates 1.3*1.3 as 1.6900000000000002?
有什么方法可以解决这个问题吗?
因为浮点是用二进制表示的,而不是十进制。有些十进制数字无法精确表示。不幸的是,由于Javascript只有一个Number类,所以它不是一个很好的工具。其他语言也有不错的十进制库,专门用来避免这种错误。你要么接受一美分的错误,要么在服务器端实现解决方案,要么非常努力地解决这个问题。
参见:
JavaScript浮点数问题
浮点数字php/java(服务器端)的二进制表示
因为javascript中的float(读:doubles)不是很准确,所以可以四舍五入以使用更少的小数来隐藏问题。做这件事的一个非常棘手的方法是:
var num = 1.3*1.3;
Math.round(num * 100)/100;
相关文章:
- 使用正则表达式评估电子邮件地址时出现性能问题
- 如何检查链接是否有文本,并根据文本值评估条件-Jquery/JS
- 类型错误'未定义'不是对象(正在评估'navigator.connection.type'
- 下载javascript文件,但不要立即对其进行评估
- 在WebView iOS中评估Javascript
- TypeError:undefined不是对象(正在评估'newWindow.focus')
- r.js评估'text'插件,尽管在'stubModules'参数
- 避免重新评估和动态卸载用“require”调用的对象
- 删除评估值Javascript时的错误
- 咖啡脚本意外的条件评估
- Javascript-在一行中评估多个正则表达式
- &&评估问题
- 在JavaScript中评估复杂的数学表达式
- JavaScript:获取对象的评估属性
- 基本的Javascript/jQuery数学游戏:为什么可以't我第二次运行此函数时进行评估
- 带有 Sweet.js 的惰性评估宏
- 蒙戈 --安静不抑制 --评估输出
- 我可以在对象上下文中评估表达式吗?
- 使用评估函数调用 javascript 函数作为文本框 Asp.net 参数
- Webpack:是否可以在编译时评估javascript表达式