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中对象赋值的问题 留言板的代码在其他浏览器都好用,在ie下就不行? 阿拉伯数字小写转大写问题~~~急,在线等! 在线等 做了一个图片拖动,为什么onmousemove 写个没有实现的方法可以,这个方法怎么实现 json简单问题 帮忙 如何在父页面提交iframe中的表单? javascript中怎么访问access数据库? 想实现一个足球比赛计时的显示,分钟数过60之后继续向上累加数量 这样为什么不行?(遍历对象属性) cookie??? 提交框里的内容都被添写和被选中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,呵呵。