在C中,如果我们执行以下代码:
float a = 0.7;
if (a < 0.7)
{
printf("Less");
}
else
{
printf("no");
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印"Less".
但是如果我们执行以下代码:
float a = 1.7;
if (a < 1.7)
{
printf("Less");
}
else
{
printf("no");
}
Run Code Online (Sandbox Code Playgroud)
它打印"不".
这是什么原因?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 次 |
| 最近记录: |