1. ホーム
  2. c++

ロングダブル vs ダブル

2023-08-25 22:40:31

質問

様々なデータ型のサイズが、使用するシステムによって変わることがあることは知っています。

私はXP 32bitsを使用しており、その中で sizeof() 演算子を C++ で使用すると、どうやら long double は12バイト、そして double は8バイトです。

しかし、ほとんどの主要なソースでは long double は 8 バイトであり、したがってその範囲は double .

どうして12バイトもあるんだ?もし long double が本当に 12 バイトなら、値の範囲も広がっているのでは?それとも、longシグネチャは、値がdoubleの範囲を超えるときだけ使われる(コンパイラの計算)ので、8バイトを超えるのでしょうか?

どのように解決するのですか?

引用元 ウィキペディア :

<ブロッククオート

x86 アーキテクチャでは、ほとんどのコンパイラは、そのハードウェアでサポートされている 80 ビット拡張精度型として long double を実装します(データ構造を維持するために 12 または 16 バイトとして格納されることもあります)。

コンパイラは、現在ソフトウェアで実装されている128ビットの4倍精度フォーマットに対してlong doubleを使用することもできます。

言い換えれば、そうです。 long double かもしれない よりも大きな範囲の値を保存することができます。 double . しかし、それは完全にコンパイラに任されているのです。