Float x=0.1; If(x == 0.1) printf(“Equal”); else printf(“Not equal”); return 0;

为什么输出的是Not equal
2025-04-10 15:15:27
推荐回答(2个)
回答(1):

因为x是float型的变量,保存float型单精度数据,二进制保存时很可能并不是精确的0.1
0.1在程序中默认是double型的常数,二进制保存也很可能并不是精确的0.1
因此x==0.1比较很可能并不是真,原因是float和double在保存二进制不能精确保存的数据时因有效位数精度不同导致实际数据不同。
建议条件写成:x==(float)0.1
或者写成:x==0.1f

回答(2):

这是浮点数二进制存储导致的精度损失,浮点数之间比较一般不能取到等于。