【发布时间】:2018-10-31 03:26:44
【问题描述】:
标题几乎要求一切,但要提供一个 MCVE:
#include <cmath>
int main()
{
float f = std::nanf("");
double d = static_cast<double>(f);
return 0;
}
在 MSVC 2017 下,f 和 d 都报告为 nan,但这并不能证明什么,因为 static_cast 可能是未定义的行为。
以类似的方式,0.0f / 0.0f 产生-nan(ind),我将假设它是一个信号 nan,这是否遵循相同的定义/未定义规则?同上inf。
【问题讨论】:
-
浮点除以零is complicated
标签: c++ floating-point language-lawyer nan