0

我用过这个:

  long double f =79228162514264337593543950336.0;//maximum ; 2 ^ 96 because f is 12 bytes
  cout.precision(30);
  cout<<f;

但有些数字是错误的。为什么 ?

4

2 回答 2

2

long double文字的正确后缀是L

long double f =79228162514264337593543950336.0L;
于 2011-11-04T22:13:22.743 回答
2

您的实现提供了多大的 long double(或者,等效地,它为 LDBL_DIGITS 显示了什么值)?它通常是 80 位类型,具有约 20 个有效(十进制)数字。请特别注意,浮点类型将在尾数(有效数)和指数之间进行划分,因此如果它整体为 12 个字节,则它不会有 12 位有效数,因此您不能期望看到 12 个字节值得精确。

于 2011-11-04T22:15:28.327 回答