我想用十六进制常量初始化一个 double。
double dbl = 0xFEDCBA9876543212;
printf("dbl: %llX\n", (uint64_t)dbl);
我希望看到的输出是:
dbl: FEDCBA9876543212
但我得到:
dbl: FEDCBA9876543000
为什么会这样,为什么要丢弃最后 3 个字节?
最佳答案
您正在使用一个 64 位值来初始化一个 double 值,它只包含 53 个有效位。有一位四舍五入,剩下的位直接丢掉。
关于c++ - C/C++ 用十六进制初始化 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25923238/