今天写脚本的时候,alert(0.7*3);竟然等于2.099999999996,有人知道是怎么回事么?

解决方案 »

  1.   

    又遇到这样的问题。
    这是由于浮点数的精确度问题,基于IEEE754数值计算浮点数的通病,规避方法,确定你的数值的精确度,如加上toFixed(5),表示小数点后保留5位,四舍五入。
    如alert((0.7*3).toFixed(5))
      

  2.   

    javascript的浮点数计算会产生舍入误差的问题。
    浮点数值的最高精度是17位,但是在进行计算时其精度远远不如整数。例如0.1+0.2的结果不是0.3,而是0.30000000000000004。这个小小的误差会导致无法测试指定的浮点数值。
    //不要做这样的测试
    if (a + b == 0.3) {
        alert('result is 0.3');
    }
      

  3.   


    谢谢二位,我心中一喜,还以为发现js的bug,呵呵。