无穷大与NAN值

时间:2019-09-30 11:58:08

标签: c++ floating-point

我注意到Infinity和NAN表示的浮点值有所不同。是否在标准中指定了某些地方?

#include <cmath>
#include <iostream>
#include <limits>
#include <stdint.h>

union Double
{
    double value;
    uint64_t repr;
};

int main()
{
    Double d;
    d.value = std::numeric_limits<double>::infinity();
    std::cout << std::hex << "inf: " << d.repr << std::endl;

    d.value = std::numeric_limits<double>::quiet_NaN();
    std::cout << std::hex << "NAN: " << d.repr << std::endl;
    return 0;
}
Ouput: 
inf: 0x7ff0000000000000
NAN: 0x7ff8000000000000

1 个答案:

答案 0 :(得分:3)

  

我注意到Infinity和NAN表示的浮点值有所不同。

是的,这并不奇怪。这些值不同,因此它们的表示形式也应不同。

  

这是否在标准中指定了一些位置?

在C ++标准中?不。

在某些浮点标准中,例如IEEE-754?是。

注意:在C ++中,您的联合技巧具有未定义的行为。请改用memcpy