日期:2014-05-16  浏览次数:20294 次

alert(66*0.5678);计算结果显示“37.474799999999995”,为什么呢
alert(66*0.5678);
这两个数相乘,小数点后面顶多四位,javascript为什么会计算出这样的结果呢
计算结果显示“37.474799999999995”


------解决方案--------------------
var xxx=1.2345689;
alert(xxx.toFixed(2));
------解决方案--------------------
66*0.5678

66 为整数类型

0.5678 为浮点类型

浮点类型的范围要比整数类型大,所以66被向上转型为浮点类型,计算结果也就是浮点类型了。
------解决方案--------------------
对于大数字的运算,最保险的办法是按字符串存储,自己写方法计算结果。最好这样的问题在java代码中处理,可以利用BigDecimal这个类来做大数字的运算。