呀!是个问题,应当是个 BUG。
我用 IE、 Netscape 和 Opera 在客户端和服务器端(ASP)代码都试了一下,果然如此。
不过奇怪的是,只有 JavaScript 出现这种结果,而 VBScript 得到的是正确结果。试试这个:var a, b, c;a = "1234.5";
b = "678.91";
c = a * 1.0 + b * 1.0;
alert(c);  // 1913.4099999999999
c = a + b;
alert(c);  // 1234.5678.91我怀疑这三个浏览器是不是用的同一个代码库(Netscape 先做出来的)?

解决方案 »

  1.   

    机器的内存,cpu各个储存设备都是有限的!不可能无穷无尽,web上的网页就更不可能了!他只能精确到小数点后的第x位,最后一位是错的!不然你的电脑非死机不可!!
      

  2.   

    计算精度是有限的!不能精确的表示分数。计算机只能尽可能准确的计算分数。它有一个固定的小数位数长度,javascript好像是14位。如果在14位之后还有数字,计算机基本上把它放弃。因此,如果有15位小数,只有14位是精确的,还有最后一位是错的!
      

  3.   

    86217.8+45.6=86263.40000000001
    这种问题在其他语言如同样的可用于网页的语言VBS中并不出现。我想你用计算器算也算不出这种结果吧?计算器不也是程序吗?
    是不是JS在二进制/十进制转换的近似算法不行?
    我本来想做个网页上的货币计算器的,这种情况可不行。我现在的解决办法是转成字符型再取小数点后两位。
      

  4.   

    javascript不适合数学计算var a, b, c;a = "1234.5";
    b = 678.91;alert(a+b);         //alert(1234.5678.91);
    alert(eval(a)+b);   //alert(1913.4099999999999);也许eval函数在数值类型转换方面正宗一些,但仍然无法计算准确,javascript就这样,我在早些时候的一本书上知道纯粹的javascript无法很好的支持数学运算,但不知是哪本了
      

  5.   

    用这段东西吧,不过可能只是IE5以上版本才有用。
    document.oncontextmenu=nomenu;function nomenu()
    {
    return false
    }
      

  6.   

    Javascript 转化类型问题特恶心
    可以如此如此...<script language=vbscript>
    function StrToInt(str)
       StrToInt=CLng(str)
    end function
    </script><script>
    a="1";
    b=2;
    window.alert(StrToInt(a+b));
    </script>
      

  7.   

    Javascript 转化类型问题特恶心
    可以如此如此...<script language=vbscript>
    function StrToInt(str1,str2)
       StrToInt=CLng(str1) + CLng(str2)
    end function
    </script><script>
    a="1";
    b=2;
    window.alert(StrToInt(a,b));
    </script>