我被这种奇怪的行为震惊了:
float pi = 3.14;
if(pi == 3.14)
cout << "OK";
else
cout << "How is it possible?";
谁能解释一下?
最佳答案
if
语句中的常量是(double)3.14
。它非常接近其 float
版本,但不完全等于它,因为 3.14
未完全表示。
用 1.25
或任何其他可以精确表示的数字尝试相同的技巧,您将得到一个 OK
。
float num = 1.25;
if(num == 1.25)
cout << "OK";
else
cout << "How is it possible?";
您还可以将 3.14
转换为 float
以获得 OK
:
float pi = 3.14;
if(pi == (float)3.14)
cout << "OK";
else
cout << "How is it possible?";
关于c++ - 将 float 与常量进行比较时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10839486/