【发布时间】:2021-09-19 16:28:36
【问题描述】:
int main() {
// Write C code here
float x = 3.14;
if(x==3.14){
printf("true");
}
return 0;
}
我无法执行这部分 if 条件。
【问题讨论】:
-
3.14是双精度,试试if (x == 3.14f)。 -
作为一般规则,不要尝试比较浮点数是否完全相等。浮点数几乎从来都不是精确的。即使看起来它们必须相等(例如,当您测试一个值是否是您认为的那样),也有许多事情可以“在幕后”进行以使相等比较失败。这就是这里发生的事情。
-
对于
float x = 3.14;MS VC 确实发出警告:truncation from 'double' to 'float'。如果您的编译器没有这样做,请提高警告级别。如果是这样,请不要忽略警告 - 有些肯定是错误。
标签: c if-statement floating-point