alert(0.0000002) == 2e-7也就是说parseInt()参数是string类型调用的时候参数先得转换成string即:parseInt((0.0000002).ToString());不是BUG。

解决方案 »

  1.   

    单精度(Single)和双精度(Double)型数值即为浮点数值,它表示的是带小数的实数。
    单精度型能精确到七位,而双精度能精确到15位。
    看来javascript中的Number为单精度类型。alert(100000000000000000001 == 100000000000000000000) 为 "true";
      

  2.   

    看来超过精度就会变成1
    并不止小数
    alert(parseInt(1000000000000000000000)); 
    这也是1
    我也想是精度问题但搞不懂为什么显示1而不是0
    原来只要超过精度就是1
      

  3.   

    简单的说,超过精度的数组转换为字符串后就是科学计数法,如:1e27、2e-8等,而parseInt()只处理首位的数字字符,即:1e27、2e-8。可以考虑用parseFloat代替parseIntparseInt方法可以理解成这样:
    function parseInt(param) {
        return parseFloat(/^\d+/.exec(param.toString()));
    }
      

  4.   

    延伸一下,样式表中的数字也可以用科学计数法!
    <div style="width:1e2px;height:2e2px;background-color:Red;"></div>测试的结果即真理
      

  5.   

    alert(0.000000001)
    得到1e-9
    parseInt 会先把这个数转成字符串的“1e-9”
    变成parseInt("1e-9")
    所以得到1了
      

  6.   

    alert(0.000000001)
    得到1e-9
    parseInt 会先把这个数转成字符串的“1e-9”
    变成parseInt("1e-9")
    所以得到1了
      

  7.   

    alert(0.1000000000000021 == 0.1000000000000022) // false
    alert(0.10000000000000021 == 0.10000000000000022) // true纠正一下前面的说法,经过进一步测试:Number是双精度(Double),而不是单精度(Single)
    双精度(Double)精确到15-16位
      

  8.   

    我一直就想是精度问题
    没想到即使参数是数字parseInt 也会转成字符
    看来以后对数字还是用math的方法好了