为什么js计算999999*99.99会计算错呢
答案:2 悬赏:10 手机版
解决时间 2021-01-21 13:21
- 提问者网友:我没有何以琛的痴心不悔
- 2021-01-20 13:47
为什么js计算999999*99.99会计算错呢
最佳答案
- 五星知识达人网友:轮獄道
- 2021-01-20 14:05
十进制数字 0.5,用二进制表示为 0.1
可以理解为 0*2^0+1*(2^-1) = 0.5
十进制数字 0.25,用二进制表示为 0.01
可以理解为 0*2^0+0*(2^-1)+1*(2^-2) = 0.25
十进制数字 0.75,用二进制表示为 0.11
可以理解为 0*2^0+1*(2^-1)+1*(2^-2) = 0.75
好了,问题来了 怎么表示一个 介于 0.25~0.5 之间的数?
除不尽吧?无理数吧?对了,这就是浮点数不是刚刚好等于一个十进制浮点数的原因追问讲的很好关键是现在不是99999899990000.00999.........几,这不科学还是没解决问题追答num = Math.round(num*100)/100;
做一下舍入,保留两位小数追问大哥是我表达有问题还是你回答错模块了,请看清楚在回答可以么?或者麻烦自己写个程序输出一下看看值再说好么?不要老是拿理论哪有套,有事实并非如此,可以实践后再说么?追答呵呵
可以理解为 0*2^0+1*(2^-1) = 0.5
十进制数字 0.25,用二进制表示为 0.01
可以理解为 0*2^0+0*(2^-1)+1*(2^-2) = 0.25
十进制数字 0.75,用二进制表示为 0.11
可以理解为 0*2^0+1*(2^-1)+1*(2^-2) = 0.75
好了,问题来了 怎么表示一个 介于 0.25~0.5 之间的数?
除不尽吧?无理数吧?对了,这就是浮点数不是刚刚好等于一个十进制浮点数的原因追问讲的很好关键是现在不是99999899990000.00999.........几,这不科学还是没解决问题追答num = Math.round(num*100)/100;
做一下舍入,保留两位小数追问大哥是我表达有问题还是你回答错模块了,请看清楚在回答可以么?或者麻烦自己写个程序输出一下看看值再说好么?不要老是拿理论哪有套,有事实并非如此,可以实践后再说么?追答呵呵
全部回答
- 1楼网友:醉吻情书
- 2021-01-20 14:11
计算结果为99989900.00999999追问并不是你说的值如果是的话保留两位小数就对了,关键现在不是,你可以自己写程序弹出看看再说啊追答
追问我去输错了是999999*999999999.99保留两位小数他就会丢失0.01结果是999998999990000.00为什么999998999990000.01没道理
追问我去输错了是999999*999999999.99保留两位小数他就会丢失0.01结果是999998999990000.00为什么999998999990000.01没道理
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯