思控肩官

 

使用double和float类型时需要注意

用作判断时最好不要使用“==”

原因:double和float可能取不到我们输入进去的数值

     在十进制中小数有些是无法完整用二进制表示的。它们只能用有限位来表示,从而在存储时可能就会有误差。十进制的小数采用乘2取整法进行计算,取掉整数部分后,剩下的小数继续乘以2,直到小数部分全为0.

实例:

0.125变成二进制为

0.125*2 = 0.25......取整0

0.25*2 = 0.5..........取整0

0.5*2 = 1.0.………取整1

0.0*2 = 0

所以0.125的二进制为0.001

但是
0.9*2 = 1.8.......取整1
0.8*2 = 1.6…...取整1
0.6*2 = 1.2......取整1
0.2*2 = 0.4......取整0
0.4*2 = 0.8......取整0
0.8*2 = 1.6......取整1
………………………………
从而它是一个循环,不可能出现小数部分为0的情况。从而在内存中表示时就会小于0.9

 

posted on 2020-05-19 10:35  思控肩官  阅读(489)  评论(0编辑  收藏  举报

导航