双倍与长双倍的值在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,我就做不到。

相关文章:
  • 没有找到相关文章