首页 新闻 会员 周边

parseFloat(0.01)+parseFloat(0.09)等于多少

0
悬赏园豆:5 [已解决问题] 解决于 2014-09-12 17:54

真实的执行结果

parseFloat(0.01)+parseFloat(0.09)=0.09999999999999999

parseFloat(0.0101)+parseFloat(0.0909)=0.10099999999999999

parseFloat(0.0109)+parseFloat(0.0901)=0.101

parseFloat(0.09)+parseFloat(0.01)=0.09999999999999999

突然感觉我的数学好差。。。。。。。

有没有人帮我纠正一下三观

问题补充:

parseFloat(0.009)+parseFloat(0.001)=0.009999999999999998

parseFloat(0.0009)+parseFloat(0.0001)=0.001

 
王者永乐的主页 王者永乐 | 初学一级 | 园豆:29
提问于:2014-09-12 15:05
< >
分享
最佳答案
0

浮点数都会有精度问题.要想在运算中部出错,你可以使用小数.decimal 

浮点数移位机内表示方法的问题.不管是在表示还是运算时,都会出现误差

收获园豆:3
吴瑞祥 | 高人七级 |园豆:29449 | 2014-09-12 17:04
其他回答(2)
0

decimal 类型就可以实现了,你要知道,float表达小数是不准确的,只能正确表达0.5 0.25 0.125 这些相加的数

收获园豆:1
刘宏玺 | 园豆:14020 (专家六级) | 2014-09-12 15:30

为什么同样是末尾9和末尾1,有两个是准确的呢?

支持(0) 反对(0) 王者永乐 | 园豆:29 (初学一级) | 2014-09-12 16:12

@王者永乐: 我只能说你是没事闲的,一个少了点,一个多了点,相加不就正好了!

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2014-09-12 16:14
0

因为计算的时候是要先转成二进制的所以都有偏差

收获园豆:1
晨冬之雪 | 园豆:185 (初学一级) | 2014-09-12 16:05

转二进制貌似所有的运算都会转,但是为什么偏偏float出差错呢

支持(0) 反对(0) 王者永乐 | 园豆:29 (初学一级) | 2014-09-12 16:13

@王者永乐: 你 可以看看我的文章

http://www.cnblogs.com/bjjjunjie/p/3948766.html

支持(0) 反对(0) 晨冬之雪 | 园豆:185 (初学一级) | 2014-09-12 16:14

@王者永乐: 只有有小数点的情况下才会出问题

支持(0) 反对(0) 晨冬之雪 | 园豆:185 (初学一级) | 2014-09-12 16:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册