今天写脚本的时候,alert(0.7*3);竟然等于2.099999999996,有人知道是怎么回事么?
解决方案 »
- 有没JS高手帮忙看下JS如何写。
- 这个难题,外国的问答站不细致深入了解其中含义,就关闭了,像国内精英请教吧
- js代码冲突求解!
- 请教javaScript保存网页的脚本,包括图片保存到TitleName_files目录
- 相关JS中一个this的问题
- 如果用js获取regularexpressionvalidator验证结果
- onclick为何不响应
- 用JS代码使浏览器窗口全屏怎么做?
- 在javascript中我怎样找历史纪录直到找到符合我的一定条件的历史纪录截至
- html li标签默认选择第几个的问题
- 提交框里的内容都被添写和被选中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,呵呵。