我有以下程序:
一般来说,从“nan”-“不是数字”的含义可以清楚地看出,与“nan”进行的任何操作基本上都是无意义的。从我在互联网上找到的IEEE-754中,如果FPU中至少有一个操作数是“nan”,则结果也是“nan”,但我没有找到关于正常值和“nan”之间比较的内容,就像上面的例子一样。
标准对此有什么规定?
#include <iostream>
#include <cmath>
int main() {
double a = 1;
double b = nan("");
std::cout << (a > b) << std::endl;
std::cout << (b > a) << std::endl;
return 0;
}
输出:
0
0
一般来说,从“nan”-“不是数字”的含义可以清楚地看出,与“nan”进行的任何操作基本上都是无意义的。从我在互联网上找到的IEEE-754中,如果FPU中至少有一个操作数是“nan”,则结果也是“nan”,但我没有找到关于正常值和“nan”之间比较的内容,就像上面的例子一样。
标准对此有什么规定?
==
比较。你检查了<
和>
,但没有检查==
。也许你想使用<
和>=
或<=
和>
。 - jotik