双倍与长双倍的值在C++
value of double vs long double in C++
本文关键字:C++ 更新时间:2023-10-16
in C++ 我正在定义以下类型:
double doubleType = 1.6e-300;
long double longDoubleType = 1.6e-300;
然后,我将使用以下方法打印值:
cout << "double is of size " << sizeof(doubleType) << " and value is " << doubleType << endl;
cout << "long double is of size " << sizeof(longDoubleType) << " and value is " << longDoubleType << endl;
我的输出如下:
double is of size 8 and value is 1.6e-300
long double is of size 12 and value is -1.43863e-264
是什么导致了对值的解释不同?
您似乎不太可能在 std::cout
中出现这种行为。更有可能的是,您使用了带有错误格式说明符的printf
,例如:
printf("%g", longDoubleType);
这是未定义的行为。它几乎可以做任何事情,但它的常见方式之一是longDoubleType
的某些位被解释为double
而不是long double
。
有了printf
,我可以重现你的输出。有了std::cout
,我就做不到。
相关文章:
- 没有找到相关文章