1

IEEE 754-2008 によると、binary32 および decimal32 標準があります。

                                                            Decimal Decimal
Name        Common name         Base  Digits E min  E max   Digits  E max
binary32    Single precision    2     23+1   −126   +127    7.22    38.23
decimal32                       10    7      −95    +96     7       96

したがって、どちらも 32 ビットを使用しますが、10 進数 32 は 7 桁で E max は 96 ですが、float32 は 7.22 桁で E max は ~38 です。

これは、10 進数の 32 の精度は似ていますが、範囲がはるかに優れていることを意味しますか? では、float32 ではなく decimal32 を使用することを妨げているのは何ですか? それは彼らのパフォーマンス(すなわちスピード)ですか?

4

3 に答える 3

2

あなたが「10 進数の 32 は同様の精度を持っています…」と言うときのあなたの推論には欠陥があります。バイナリ形式の 10 進数の「同等の」数として表現される精度を比較することを選択すると、間違った印象を与えます。これは、これらの 10 進数のシーケンスで、一部の領域では、バイナリ形式が追加の精度で数値を表すことができるためです。

1 から 1e7 までの binary32 数の数は、2 進表現を整数であるかのように減算することで計算できます。同じ範囲の decimal32 数の数は 7 桁 (*)、または 7e7 (1 から 9.999999 までの 1e7 数、10 から 99.99999 までの別の 1e7 数、…) です。

(*)ビナードに似ていますが、10 の累乗です。

于 2014-01-10T07:26:19.237 に答える
1

小数の正確な表現が必要な場合は、decimal32 を使用します。任意の実数に対する概して適切な近似がより重要である場合は、binary32 を使用します。

于 2014-01-10T14:40:14.537 に答える