首页 新闻 会员 周边

javascript 问题,救教育~,59.8-0.1 等多少?

0
悬赏园豆:10 [已解决问题] 解决于 2011-04-22 09:51

不是59.7么?为什么啊?

谁能给个正确的解答?

skyedge的主页 skyedge | 菜鸟二级 | 园豆:275
提问于:2011-04-21 19:02
< >
分享
最佳答案
0
收获园豆:4
邀月 | 高人七级 |园豆:25475 | 2011-04-21 19:48
其他回答(4)
0

由于浮点数精度的问题,会得到这样的数字59.699999999999996

收获园豆:4
Gray Zhang | 园豆:17610 (专家六级) | 2011-04-21 19:36
可能是,但是 1位小数,浮点也有溢出?想不通,能不能解释的更清楚一点?谢谢。
支持(0) 反对(0) skyedge | 园豆:275 (菜鸟二级) | 2011-04-21 19:38
不是可能是,我说的就是确切地答案,这不是溢出的问题,是javascript的数字存储格式(IEEE规范)注定他无法精确地保存59.7这个数字
就像十进制的世界中,你没办法说明10/3是多少,因为是个无限小数
支持(0) 反对(0) Gray Zhang | 园豆:17610 (专家六级) | 2011-04-21 19:40
0

一位小数, 这个一位, 是在十进制下的概念。

二进制下那就不是一位了。

收获园豆:1
undefined | 园豆:898 (小虾三级) | 2011-04-21 23:01
0

设置类型为decimal,确定小数点位数

收获园豆:1
jsnt_rd | 园豆:211 (菜鸟二级) | 2011-04-22 08:12
javascript 怎么用 decimal(2,1)?
支持(0) 反对(0) skyedge | 园豆:275 (菜鸟二级) | 2011-04-22 09:51
我这边是用的EXTJS,可以直接设置这个属性
支持(0) 反对(0) jsnt_rd | 园豆:211 (菜鸟二级) | 2011-04-22 09:54
0

数字的舍入问题,计算机表示数据不像我们理解的数学表示,计算机保存数据是不连续的,如果恰好有个计算结果它无法表示,就会找一个近似的数替代。在java里可以使用BigDecimal这个类来解决,但是需要先把浮点数转换成字符串,使用构造方法传给BigDecimal,再调用其方法进行计算。

荆州刘备 | 园豆:205 (菜鸟二级) | 2011-04-22 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册