浮動小数点数: 0.1 とそのコンピュータ表現の間の矛盾を理解する
浮動小数点演算はコンピューター サイエンスの基本ですが、0.1 などの数値を格納する方法は直感に反する場合があります。 この説明は表現プロセスを明確にします。
IEEE 754 標準では、浮動小数点数が符号ビット、指数、仮数で構成されることが規定されています。 0.1 のバイナリ表現を調べてみましょう:
<code>0 | 01111011 | 10011001100110011001101</code>
内訳は次のとおりです:
指数は 2-4 の乗算を表します。仮数は小数部分を表します。 これらのコンポーネントを追加すると、約 1.60000002384185791015625 となります。 2-4 を掛けると 0.100000001490116119384765625 となり、0.1 に近い近似になります。
10 進数表現も同様のパターンに従います。たとえば、0.8125 は次のように保存されます:
<code>0 | 01111110 | 10100000000000000000000</code>
指数は、2-1の乗算を示します。仮数 1.101 は 13/8 に相当します。 したがって、13/8 * 1/2 = 0.8125.
この詳細な表現は、0.1 のような一見単純な 10 進数がわずかに異なる浮動小数点相当値を持つ理由を明らかにしています。このわずかな不正確さはシステムに固有のものであり、コンピューター システム内の数値計算を理解する上で非常に重要です。 この方法により、計算の精度と効率が保証されます。
以上が浮動小数点演算で 0.1 が 0.1 に等しくないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。