5

今日、私はMatlabでこの単純な問題に出くわしました:

>> 1/(10^309)

ans =

     0

そしてすべてが順調です。今私はタイプします:

>> 0.0001/(10^308)

ans =

    9.999999999984653e-313

と非常に混乱します。Matlab で可能な最小数ではありませんでしたrealmin=2.225073858507201e-308か? 上記の出力が得られないのはなぜ0ですか?

4

2 に答える 2

6

realminIEEE 倍精度で正規化された最小の正の浮動小数点数を返します。

より小さな正の非正規化浮動小数点数があります。「<a href="http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf" rel="noreferrer">すべてのコンピューター科学者が浮動小数点演算について知っておくべきこと」をご覧ください。 .

eps異なる数値間の最小の増分を返すことにもっと興味があるかもしれません。

于 2012-04-21T18:35:44.723 に答える
5

ではhelp realmin、「REALMIN 最小の正の正規化された浮動小数点数」と記載されています。

正規化された浮動小数点数には、仮数に先行ゼロがないため、1.123 * 10^-10 のようになります。0.0001 * 10^-10 のように仮数の先頭にゼロがある場合、それはdenormalです。

eps(0)Matlabで利用可能な最小のデノーマル数を与えると思います。

于 2012-04-21T18:38:11.637 に答える