【发布时间】:2017-05-23 23:14:05
【问题描述】:
我需要让-nan 只使用double 类型和算术。
所以,代码应该是这样的:
double a = ...
cout << a << endl;
-nan
... 是一些表达式。
【问题讨论】:
-
“需要”。这是作业要求吗?
我需要让-nan 只使用double 类型和算术。
所以,代码应该是这样的:
double a = ...
cout << a << endl;
-nan
... 是一些表达式。
【问题讨论】:
如果您的平台使用 IEEE754 浮点,则 0.0 / 0.0 将评估为 NaN。
您也可以使用std::numeric_limits<double>::quiet_NaN(),在您的平台上检查std::numeric_limits<double>::has_quiet_NaN 是true。
确实没有签名NaN 这样的东西,尽管NaN 的表示可能包含一个可以被std::cout 拾取的符号位。也许在您的平台上-0.0 / 0.0 会生成一个“否定”NaN。在a 为NaN 的情况下,cout << a 的结果完全取决于编译器。
【讨论】:
constexpr 方式。
std::nan("1"); 路线。
要得到一个负的 nan,只需用 0x80000000 或一个 NaN 表示。您必须尝试将地址转换为 unsigned char * 或 long long * 或课程。
【讨论】: