呀!是个问题,应当是个 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 先做出来的)?
我用 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 先做出来的)?
这种问题在其他语言如同样的可用于网页的语言VBS中并不出现。我想你用计算器算也算不出这种结果吧?计算器不也是程序吗?
是不是JS在二进制/十进制转换的近似算法不行?
我本来想做个网页上的货币计算器的,这种情况可不行。我现在的解决办法是转成字符型再取小数点后两位。
b = 678.91;alert(a+b); //alert(1234.5678.91);
alert(eval(a)+b); //alert(1913.4099999999999);也许eval函数在数值类型转换方面正宗一些,但仍然无法计算准确,javascript就这样,我在早些时候的一本书上知道纯粹的javascript无法很好的支持数学运算,但不知是哪本了
document.oncontextmenu=nomenu;function nomenu()
{
return false
}
可以如此如此...<script language=vbscript>
function StrToInt(str)
StrToInt=CLng(str)
end function
</script><script>
a="1";
b=2;
window.alert(StrToInt(a+b));
</script>
可以如此如此...<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>