7

realmin「IEEE 倍精度で最小の正の正規化された浮動小数点数を返します」。eps(X)「は、ABS(X) から、X と同じ精度の浮動小数点数が次に大きい数値までの正の距離です」。

上記のドキュメントを正しく解釈している場合、realmin表現できる最小の正の数は よりも小さくなければなりませんeps (0)。しかし:

>> realmin; % 2.2251e-308
>> eps(0);  % 4.9407e-324

明らかにeps(0)、さらに小さい も表すことができます。誰かが私にこれを説明できますか?

4

2 に答える 2

10

これは浮動小数点の問題です。denormal numbersを読んでください。

簡単に言えば、realmin最小の正の正規化された浮動小数点数を返します。しかし、これよりも小さくても浮動小数点で表現可能な非正規数を持つことが可能であり、それがeps(0)返されます。

非正規数の簡単な説明

2 進浮動小数点数は次のようになります。

1.abcdef * 2^M

ここで、abcdefgはそれぞれ 0 または 1 でM、範囲は -1022 <= M <= 1023 です。これらは、正規化された浮動小数点数と呼ばれます。可能な最小の正規化された浮動小数点数は1 * 2^(-1022)です。

デノーマル数はこんな感じ

0.abcdef * 2^(-1022)

そのため、可能な最小の正規化された浮動小数点数よりも小さい値を取ることができます。-realminデノーマル数はとの間で線形補間されrealminます。

于 2013-04-04T09:04:34.017 に答える
2

おそらく定義の問題です。これは、eps のドキュメントで見られるものです。

For all X of class double such that abs(X) <= realmin, eps(X) = 2^(-1074)
于 2013-04-04T08:54:07.173 に答える