問題タブ [epsilon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
778 参照

ios - 目標 C: 安全な float 比較が異常に失敗する

私はコードを書き、本当に奇妙な問題に遭遇しました。2 つの float 間NOの比較は、実際の比較が true の場合でも返されます。と比較して、安全な浮動小数点比較も使用しましたFLT_EPSILON。これはコードです:

比較は常に失敗し、コードは無限ループに入ります。iOS 7 の 32 ビット デバイスと iOS 8 の iPhone 5S シミュレーターでこれをテストしました。

0 投票する
1 に答える
1942 参照

fortran - Fortran でマシン イプシロンを決定する

FORTRAN 90 で、コンピュータのイプシロンを決定するプログラムを作成するにはどうすればよいですか?

0 投票する
3 に答える
18136 参照

matlab - MATLABでマシンイプシロンを計算するには?

マシンのイプシロンを見つける必要があり、次のことを行っています。

しかし、それは私にこれを示しています:

私は何をすべきか?

0 投票する
2 に答える
2792 参照

java - Java: ダブル マシンのイプシロンは、1+x != 1? のような最小の x ではありません。

C/C++ の場合と同様に、 のような最小の表現可能な値であるという定義を使用して、Java でdouble マシンのイプシロンを決定しようとしています。ウィキペディアによると、このマシンのイプシロンは(52 は仮数ビット数 - 1)と等しくなります。doublex1.0 + x != 1.02^-52double

私の実装では次のMath.ulp()関数を使用します。

結果は私が期待したものです:

ここまでは順調ですね。ただし、与えられたepsが実際にそのような最小 であることを確認すると、より小さいもの、別名によるの値があるようです:x1.0 + x != 1.0 doubleMath.nextAfter()

どちらが得られますか:

ご覧のとおり、定義に反して、1 に追加すると 1 にならないマシン イプシロンよりも小さいものがあります。

では、この定義による一般的に受け入れられているマシン イプシロンの値のどこが間違っているのでしょうか? それとも私は何かを逃しましたか?浮動小数点演算の別の難解な側面を疑っていますが、どこが間違っていたのかわかりません...

編集:コメント者のおかげで、私はついにそれを手に入れました。私は実際に間違った定義を使用しました! eps = Math.ulp(1.0)は、表現可能な最小の double > までの距離を計算しますがそれ1.0がポイントです。それはで最小でepsなく、その値の約2 倍です。x1.0 + x != 1.01.0 + Math.nextAfter(eps/2)1.0 + eps

0 投票する
6 に答える
2784 参照

python - Python イプシロンは最小数ではありません

何をsys.float_info.epsilon返しますか?

私のシステムでは、次のようになります。

これはどのように可能ですか?

編集:

あなたは大丈夫です、私は epsilon が min と同じことをすると思っていました。だから私は実際に意味しsys.float_info.minました。

EDIT2

皆さん、特に John Kugelman さん、ご回答ありがとうございます。

自分自身に物事を明確にするために、いくつか遊んでいました:

したがってepsilon * min、最小の正の仮数 (または仮数) と最小の指数を持つ数値が得られます。