0.7*3=2.0999999999996? 今天写脚本的时候,alert(0.7*3);竟然等于2.099999999996,有人知道是怎么回事么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 又遇到这样的问题。这是由于浮点数的精确度问题,基于IEEE754数值计算浮点数的通病,规避方法,确定你的数值的精确度,如加上toFixed(5),表示小数点后保留5位,四舍五入。如alert((0.7*3).toFixed(5)) javascript的浮点数计算会产生舍入误差的问题。浮点数值的最高精度是17位,但是在进行计算时其精度远远不如整数。例如0.1+0.2的结果不是0.3,而是0.30000000000000004。这个小小的误差会导致无法测试指定的浮点数值。//不要做这样的测试if (a + b == 0.3) { alert('result is 0.3');} 谢谢二位,我心中一喜,还以为发现js的bug,呵呵。 可复选的下拉列表框有吗 有一个方便的工具能清楚的表达一个JS文件的结构吗 求救高手,如何使用dsoframer打开word文档后如何替换文档里面的文字? jquery 写个点击按钮浮动弹出层,然后背景变暗或者不能操作 document.write语句,为什么有时候会把之前的内容清除掉呢? 怎样解决listbox中项目移不去的问题 跪求 JS 代码 转换 C# 代码 很小一段~~~ ie11探查器空白问题 js页面数据如何加密 mousedown()左键无效 提交框里的内容都被添写和被选中CHECKBOX中的一个? CHECKBOX只要先择一个或一个以上的话,可以提交FORM。
这是由于浮点数的精确度问题,基于IEEE754数值计算浮点数的通病,规避方法,确定你的数值的精确度,如加上toFixed(5),表示小数点后保留5位,四舍五入。
如alert((0.7*3).toFixed(5))
浮点数值的最高精度是17位,但是在进行计算时其精度远远不如整数。例如0.1+0.2的结果不是0.3,而是0.30000000000000004。这个小小的误差会导致无法测试指定的浮点数值。
//不要做这样的测试
if (a + b == 0.3) {
alert('result is 0.3');
}
谢谢二位,我心中一喜,还以为发现js的bug,呵呵。