JavaScript:为什么100*9.8不等于98

来源:百度知道 编辑:UC知道 时间:2024/06/09 13:49:16
为什么在javascript里面,100*9.8不等于98,而出现了好多小数位数。计算结果是这样的:100*98=980.0000000000001
谢谢·!
上面写错了,应该是:100*9.8=980.0000000000001 我想问的是为什么后面会有这么多小数呢?而不是980

呼叫:kanerry有没有办法解决?
回复:栽培者,我想最好保留两位小数,因为是产品的价格
问题已经解决:numObj.toFixed([fractionDigits]) ---> Number(10*9.8).toFixed(2)

float型数存储时只是一个近似数
无法精确的表示小数

如果你算出来是979.9999999999999也是正常的

javascript估计没办法,也只能用近似

题外话:(做广告)
.net中有decimal类型,也就是高精度十进制
decimal a=(decimal)(100*9.8);
得出a就是980
没有后面一大堆东西

100*9.8=980

没错啊??

100*0.98 才=98吧?

你可以用 Math.floor 来将它转为整数。
alert(Math.floor(100*9.8))