level 4
如标题,float 和 long double 都不会遇到这种情况
2012年12月10日 07点12分
1
level 11
一般没有人用浮点数判等于的。都是想减,比如
abs(a - b) < 0.0001 就认为他们相等
2012年12月10日 07点12分
2
那精度是怎么丢失的呢
2012年12月10日 07点12分
回复 richard1122 :我也感觉是这样 - -但是想知道更详细的原因啊
2012年12月10日 08点12分
level 10
精度丢失的原因是:并非所有有限10进制小数都可转换到有限2进制小数,因此,只要转换到的2进制小数是有限小数,且在尾数精度范围内,就可以精确转换,自然也可以比较;否则不能比较
例如这里2.01转到2进制,是无限小数,从字面值(2.01)到存储态(这里假设是ieee 754 binary64格式),精度产生损失,无限循环尾部会被截去若干
如果换成2.5(201 -> 250),则不存在这个问题,楼主可试试看
2012年12月10日 08点12分
3
第一段“因此”->“然而”
2012年12月10日 08点12分
回复 矮油嫑酱紫唉 :多谢
2012年12月10日 08点12分
“比较”->“作相等或不等比较”
2012年12月10日 08点12分
回复 矮油嫑酱紫唉 :那为什么float 和 long double 没有出现这种情况
2012年12月10日 08点12分