C ++中double和long double的值

时间:2017-01-16 19:46:35

标签: c++ double

在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

造成价值解释的差异是什么?

1 个答案:

答案 0 :(得分:0)

std::cout似乎不太可能出现此行为。更有可能的是,您使用了printf格式说明符错误,如:

printf("%g", longDoubleType);

这是未定义的行为。它可以做任何事情,但它发挥的一个常见方式是longDoubleType的某些位被解释为double而不是long double

With printf,我可以重现你的输出。使用std::cout,我不能。