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 に対してどのような値が表示されるか)。多くの場合、最大 20 桁の有効 (10 進数) 桁を持つ 80 ビット タイプです。特に、浮動小数点型は仮数 (仮数) と指数に分割されるため、全体で 12 バイトの場合、仮数が12 ビットにならないため、12 バイトを期待することはできません精度の価値。

于 2011-11-04T22:15:28.327 に答える