2

まず、私は 10 年以上のプログラミング経験を持つ経験豊富なプログラマーであることを告白させてください。しかし、ここで私が尋ねている質問は、それ以来私を悩ませてきたものです.Cに関する本を最初に手に取ったのは約10年前です.

以下は Python に関する本からの抜粋で、Python Floating 型について説明しています。

浮動小数点数は、マシン上の浮動小数点数のネイティブの倍精度 (64 ビット) 表現を使用して表されます。通常、これは IEEE 754 であり、約 17 桁の精度と -308 から 308 の範囲の指数を提供します。これは、C の double 型と同じです。

私が理解できなかったのは、そのフレーズの意味です

" ... 約 17 桁の精度と -308 から 308 の範囲の指数 ... "

精度の意味は理解できるので、ここでの私の直感は間違っていますが、範囲はそれとどのように異なるのでしょうか。つまり、浮動小数点数が最大 17 桁の値を表すことができる場合 (つまり、最大 1,000,000,000,000,000,00 - 1)、指数を +308 にする方法を教えてください。指数が 10 の場合は 308 桁の数値になり、指数が 2 の場合はおよそ 100 桁の数値になります。

混乱を表現できることを願っています。

よろしくヴァイド、アビシェーク

4

3 に答える 3

5

1500 を 2 桁の精度で書くとします。つまり、1500 を 1600 および 1400 と区別するのに十分正確であるが、1500 を 1510 または 1490 と区別できるほど正確ではないということです。これらの数値を区別するには、3 桁の精度が必要になります。

4 桁と書きましたが、浮動小数点表現にはこれらすべての桁が含まれているとは限りません。1500 は 1.5 * 10^3 です。精度が 2 桁の 10 進浮動小数点表現では、数値の最初の 2 桁と指数のみが格納されます。これを (1.5, 3) と書きます。

「実際の」数字とプレースホルダーのゼロの間に違いがあるのはなぜですか? 数値をどれだけ正確に表現できるか、つまり、近似によって失われる値の割合がわかるためです。1500 = (1.5, 3) と 1500+100 = (1.6, 3) を区別できます。しかし、指数を大きくすると、15000 = (1.5, 4) と 15000+100 = (1.51, 4) を区別できなくなります。せいぜい、小数点以下 2 桁の精度で +/- 10% 以内の数値を概算できます。これは、指数の許容範囲がどれほど小さくても大きくても当てはまります。

于 2012-06-05T04:22:55.913 に答える
-2

Wikiによると、倍精度浮動小数点数の精度は 17 桁または 17 SF であると予想されます。指数は -1022 から 1023 の範囲である可能性があります。
それらの -308 から 308 はエラーであるか、または完全に説明されていないアイデアのように見えます。

于 2012-06-05T03:49:30.140 に答える