在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
造成价值解释的差异是什么?
答案 0 :(得分:0)
std::cout
似乎不太可能出现此行为。更有可能的是,您使用了printf
格式说明符错误,如:
printf("%g", longDoubleType);
这是未定义的行为。它可以做任何事情,但它发挥的一个常见方式是longDoubleType
的某些位被解释为double
而不是long double
。
With printf
,我可以重现你的输出。使用std::cout
,我不能。