問題タブ [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.
vector - イプシロン値を使用して、ゲーム内のボールが動いていないかどうかを判断しますか?
ボールが跳ね回っていて、衝突するたびに速度ベクトルが反発係数によって減少します。
現在、私のボールの CoR は .80 です。そのため、何度もバウンドした後、ボールの速度が途方もなく小さい数値になったため、ボールの回転が「停止」しました。
どの段階で、速度値が単純にゼロと呼ぶのに十分小さいかどうかを確認するのが適切です (そのため、ボールが微小速度に反応して狂ったようにジッタリングすることはありません)。以前にいくつかのフォーラムで、人々がイプシロン定数、いくつかの小さな数を使用してそれに対してチェックすることを読んだことがあります。
イプシロン定数を定義して、次のようにする必要があります。
ボールの速度と位置を更新するたびに? これは一般的に行われていることですか?x と y の Vector クラス セッターにそれを配置することは合理的でしょうか? または、速度を計算しているときに、ベクトル クラスの外で行う必要があります。
また、速度ベクトルに float を使用している場合、妥当なイプシロン値は何でしょうか?
c - 浮動小数点の下限
Cの浮動小数点型の下限はありますか? 整数型 (int は少なくとも 16 ビット) に下限があるように?
c# - 等しい場合は Double.Epsilon、より大きい、より小さい、より小さいか等しい、より大きいか等しい
http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx
2 つの浮動小数点数が等しいと見なされるかどうかを判断するカスタム アルゴリズムを作成する場合は、Epsilon 定数よりも大きい値を使用して、2 つの値が等しいと見なされる許容可能な差の絶対マージンを確立する必要があります。(通常、その差のマージンは Epsilon の何倍も大きくなります。)
では、これは実際には比較に使用できるイプシロンではないのでしょうか? MSDN の文言がよくわかりません。
ここの例でイプシロンとして使用できますか? - float と double の比較で最も効果的な方法は何ですか?
そして最後に、これは非常に重要だと思われるので、等しい、より大きい、より小さい、より小さいか等しい、より大きいか等しいの確実な実装があることを確認したいと思います。
floating-point - 「イプシロン」は浮動小数点計算で本当に何かを保証しますか?
a / (b - c)
問題を簡潔にするために、s の式を計算したいとしましょうfloat
。
結果が意味のあるものであることを確認するために、b
とc
が等しいかどうかを確認できます。
しかし、私のテストでは、意味のある結果を保証することも、可能であれば結果を提供することに失敗しないことも保証できないことが示されています。
ケース 1:
結果: if 条件は満たされませんが、式は正しい結果 100000008 を生成します (float の精度に関して)。
ケース 2:
結果: if 条件は満たされていますが、式は意味のある結果を生成しません+1.#INF00
。
引数ではなく、結果を確認する方がはるかに信頼性が高いことがわかりました。
しかし、イプシロンは何のためにあり、イプシロンが使いやすいと誰もが言っているのはなぜですか?
math - いくつかの丸め誤差を回避するには?
.NET でいくつかの地理座標を処理するメソッドがあり、座標の 1 つに 256 が渡された場合に 0 になるような座標ペアを格納する構造体があります。ただし、ある特定のインスタンスでは、約 255.99999998 が計算され、構造体に格納されます。255.9999998 が出力されてもかまいませんが、デバッガーが 255.99999998 を表示したときに 256 が出力されるという事実は問題です。保存と表示の両方を 0 にするとさらに良いでしょう。
具体的には、比較の問題があります。255.99999998 は 256 に十分近いので、256 と等しくなるはずです。double を比較するときはどうすればよいですか? ある種のイプシロン値を使用しますか?
編集:具体的には、私の問題は、値を取得し、いくつかの計算を実行してから、その数値に対して反対の計算を実行し、元の値を正確に戻す必要があることです。
language-agnostic - 浮動小数点の等価性テストにマシン イプシロンの使用は適切ですか?
これは浮動小数点値の等価性のテストのフォローアップです: 「精度」定数の標準名はありますか? . 等しい、より大きい、より小さい、より小さいか等しい、より大きいか等しい
という非常によく似た質問があります。Double.Epsilon
2 つの浮動小数点値xとyの等価性テストは、(単純な = ではなく) 次のように見える必要があることはよく知られています。
abs( x - y ) < epsilon 、ここでepsilonは非常に小さな値です。
epsilonの値を選択する方法は?
等値チェックで可能な限り最高の精度を得るために、イプシロンにできるだけ小さい値を選択することが明らかに望ましいでしょう。
例として、.NET フレームワークは定数System.Double.Epsilon
(= 4.94066 × 10 -324System.Double
) を提供します。これは、ゼロより大きい最小の正の値を表します。
ただし、次の理由から、この特定の値をepsilonとして確実に使用できないことが判明しました。
0 +
System.Double.Epsilon
≠ 01 +
System.Double.Epsilon
= 1 (!)
これは、私が正しく理解していれば、その定数はマシンの epsilonより小さいためです。
→これでいいの?
→ これは、イプシロン := マシン イプシロンを等価テストに
確実に使用できるという意味でもありますか?
これらの 2 つの質問は、上記のリンク先の 2 番目の SO 質問で既に適切に回答されているため、削除しました。
リンク先のウィキペディアの記事では、64 ビット浮動小数点数 (つまりdouble
、多くの言語の型) の場合、マシンのイプシロンは次のようになります。
2 -53、または約。0.000000000000000111 (小数点以下ゼロ15個の数値)
→ このことから、すべての 64 ビット浮動小数点値は (15 ではないにしても) 14 桁まで正確であることが保証されるということになりますか?
regex - 正規表現でイプシロンを表すにはどうすればよいですか?
教科書では、イプシロン(ε)
記号を使用して正規表現を書く方法を教えていますが、正規表現を完全に作り直すことなく、その記号をコードに直接変換するにはどうすればよいですか?
たとえば、この正規表現をどのように記述すれば、開始または終了a
(あるいはその両方)するすべての小文字の文字列をキャッチできますか。
これが正しいかどうかは100%わかりませんが...
((a | epsilon
)[az] *
a)| (a [az] *
(a | epsilon
))
したがって、一致する必要のある文字列には次のものがあります。
正しい記号と交換epsilon
するものだけで、式の残りの部分を変更したくありません。また、明確にしておきたいのですが、実際にはイプシロンシンボルをチェックしていません。文字を選択するか、何も選択しないようにします(何もしない...イプシロン)。
そのようなシンボルは存在しますか?
私が欲しいことは可能ですか?
c++ - C ++の浮動小数点演算の問題に対する解決策はありますか?
私はいくつかの浮動小数点演算を行っており、精度の問題があります。結果の値は、同じ入力の2台のマシンで異なります。投稿を読んだ@フロートを掛けられないのはなぜですか?また、Web上の他の資料を読んで、浮動小数点のバイナリ表現とマシンイプシロンに関係していることを理解しました。ただし、この問題を解決する方法があるかどうかを確認したかった/C++での浮動小数点演算の回避策?? ストレージ用にfloatをunsignedshortに変換し、必要に応じて元に戻しています。ただし、unsigned shortに戻すと、一方のマシンでは精度(小数点以下6桁まで)は正しいままですが、もう一方のマシンでは失敗します。
floating-point - イプシロンなしで使用される浮動小数点数は常にコードの匂いですか?
この質問はとても簡単です。これは次のものに関連していますが、間違いなくだまされていません:
パッチが適用されていない Tomcat Web サーバーのほとんどは脆弱です。誰が悪いのでしょうか?
浮動小数点数で問題が発生する可能性のある驚くべき量のことを確認しました (異なるアーキテクチャでの異なる結果、誤って使用した場合の間違った結果、2 つの異なる言語に影響する 2 つのサービス拒否クラッシュなどを含みますが、これらに限定されません)。非常に単純な質問に疑問を抱いています:
イプシロンなしで使用される浮動小数点数は、常にコードの匂いまたは仕様の匂いですか?
(つまり、浮動小数点数は科学計算にのみ使用されるべきであり、残りはすべて固定数の精度のビットを使用して実行されるべきでしょうか?)
java - Float static compareがイプシロン値を必要としないのはなぜですか?
Float.compare(f1、f2)をチェックすると、f1f2
を比較し、-1,0,1を返すことがわかりました。
次に、値が-0.0、0.0、またはNANの場合、-1,0,1を返します。
-0.0とはどういう意味ですか?
私は次のようなものを期待していたでしょう
ここで、0.001は指定されたイプシロン値です。
ありがとう。