long double と double: 精度のパズル
long double と double データ型のサイズと精度に関する議論は混乱を招く可能性があります、特に異なるオペレーティング システム上で。一般的なソースでは、long double は通常 8 バイトであるとよく述べられていますが、一部のプログラマは 32 ビット Windows システムで 12 バイトのサイズに遭遇したことがあります。
では、場合によっては、long double のサイズが 12 バイトになるのはなぜでしょうか。答えはコンパイラの実装の複雑さにあります。 Wikipedia によると、x86 アーキテクチャのコンパイラは、ハードウェアでサポートされる 80 ビットの拡張精度型として long double を実装することが多いとのことです。ただし、データ構造の整合性を維持するために、12 ~ 16 バイトの範囲のコンテナにデータを保存することを選択する場合があります。
さらに、コンパイラは、128 ビットの 4 倍精度形式に long double を使用することを選択することもあります。このような場合、long double は実際に、取り得る値の範囲を double の範囲を超えて拡張します。ただし、この拡張精度の実装は普遍的な標準ではなく、コンパイラの構成に完全に依存していることを認識することが重要です。
要約すると、long double のサイズと精度はコンパイラとシステムによって異なる可能性があります。建築。すべての場合において 2 倍より広い値範囲が提供されることは保証されません。プログラマは、コンパイラのドキュメントを参照して具体的な実装の詳細を決定し、精度が重要な計算を扱う場合は情報に基づいた決定を下す必要があります。
以上が「long double」が 12 バイトを占める場合があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。