在C中,如果我们执行以下代码:
float a = 0.7;
if (a < 0.7)
{
    printf("Less");
}
else
{
    printf("no");
}
上面的代码打印"Less".
但是如果我们执行以下代码:
float a = 1.7;
if (a < 1.7)
{
    printf("Less");
}
else
{
    printf("no");
} 
它打印"不".
这是什么原因?float数据类型如何工作?
Pet*_*der 11
问题是,这a是一个float,但是0.7是double.分配的值a从转换double为float,这会失去精度.当你比较a回double,a扩大到一double,但精度已经丧失,他们可能不再是相等的.
如果更改0.7并1.7以0.7f和1.7f那么他们将被转换为float文字,并可靠地比较等于a在这两种情况下.
| 归档时间: | 
 | 
| 查看次数: | 744 次 | 
| 最近记录: |