問題タブ [rounding-error]
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.
android - AndroidSQLiteの丸め誤差を解決する方法
Androidアプリケーションで数値の丸めに問題があります。Javaで行われる計算では、BigDecimalを使用します。これは役立ちますが、たとえばSQLiteに問題があります。
ruby - Ruby-非常に大きな整数の平方根は丸めの問題を引き起こします
私はフィボナッチ問題を解決しようとしていますが、丸めの問題に遭遇しています。
i = 8670007398507948658051921
その場合fib1 = 19386725908489880000000000.0
。
私のコードは以下のとおりです-助けてくれてありがとう。
objective-c - NSJSONSerialization.JSONObjectWithData浮動小数点変換/丸め誤差?
私の単純なRubyMotionコード:
URLは、のように浮動小数点数の温度でJSONを提供する天気APIです{ "temp_c":22.4, ... }
。不思議なことに、そのフロート22.4
はに変換され22.3999938964844
ます。
data.to_s
温度の読み取り値を調べる22.4
と、エラーは内にあると思いますNSJSONSerialization.JSONObjectWithData
。
- 誰かがこれを確認できますか?
- これに対する一般的な解決策はありますか?
すべてのフロートを強制的に丸めたくありません。
java - 低速でマウスをターゲットにしているときに、フロア内のバイアスを回避するにはどうすればよいですか?
オブジェクトがJavaで指定された最大速度でマウスポインタをたどる簡単なアルゴリズムがあります。アルゴリズムの核心はこれです:
これは毎秒30フレームで実行されています。パフォーマンスは問題ではありません。
コードは中規模から大規模の値maxSpeed
(5以上で問題ありません)で正常に実行されますが、実際に低い値では、コードによってオブジェクトが特定の角度でのみ移動します。たとえば、maxSpeed = 1
では、ターゲットは45°の角度でしか移動できません。
問題を理解する方法は次のとおりです。
maxSpeed
等しくしましょう1
。したがって、Math.sin
とMath.cos
は常に[-1、1]の範囲の値を返し、また[-1、1]の範囲dy
にdx
なります。丸めによって整数に変換する場合(ターゲットのx位置とy位置がint
変数として定義されているため)、変位はそれぞれ、、、またはのいずれか-1
に丸められ、可能な移動を同じ8つの角度に効果的に制限します。0
1
したがって、たとえば、オブジェクトが(0、0)で始まり、マウスを(300、100)に置くと、オブジェクトは最初に完全に水平に移動し、次に-45°の角度で移動します。オブジェクトを(ほぼ)一定の角度で、原点から終点まで(ほぼ)直線で移動させたいのですが。
double
基になるx座標とy座標を値に変換する以外に、これを行うための最良の方法は何でしょうか。
c++ - c++ 浮動小数点減算エラーと絶対値
私が理解している方法は次のとおりですdouble
。C ++で2つの数値を倍精度で減算すると、最初に2の指数乗から始まる仮数に変換されます。次に、減算された数値の指数が同じで、仮数に同じ桁が多数ある場合、エラーが発生する可能性があり、精度が失われます。私のコードでこれをテストするために、次の安全な追加関数を作成しました。
ただし、これをテストすると、奇妙なことに気づきます。実際のエラー (関数がエラーを報告するかどうかではなく、計算の結果として生じる実際のエラー) は、等しい桁数だけでなく、減算された数値の絶対値に依存しているようです。仮数で...
たとえば1e-11
、精度として使用しprec
、次の数値を減算します。
1) 9.8989898989898-9.8989898989897: 関数はエラーを報告し、非常に不正確な値 9.9475983006414e-14 を取得します
2) 98989898989898-98989898989897: 関数はエラーを報告しますが、正しい値 1 を取得します
明らかに私は何かを誤解しています。何か案は?
r - 要約関数 r の丸め誤差?
私は 16968 行のデータ フレームを持っています (正確さの理由は以下で明らかになります)。実行中の変数 (data$Ob) が実際にすべての行を順番にカウントしているかどうかを確認しています (最初の行 data$Ob は 1...最後の行 data$Ob は 16968 で、その間のすべての行について.
summary(data$Ob) を実行すると、最大値は 16968 ではなく 16970 であることがわかります。max(data$Ob) を実行すると、最大値は 16968 であり、summary の値ではありません。
for ループを実行して各観測値をチェックしたところ、max() 関数が正しく、data$Ob 変数が想定どおりに機能しているように見えます。しかし、集計関数が 2 ずれている理由を知っている人はいますか? 丸め誤差 (どういうわけか?) を想定していますが、このデータ チェックは、実行している分析にとって重要であり、間違っている場合、その後の分析はうまくいきません。
これが私が実行した for ループですが、この質問にとって重要ではないと思います。
ありがとう。
c# - 小数点以下の桁数が多すぎる C# で数値を丸める
floatを小数点以下 6 桁に丸めようとしています。double から float への変換はほとんどこれを行うようですが、その過程で奇妙なことに気付きました。私が何をしても、後でdoubleに変換すると、最後に架空の余分な 10 進数の値になってしまうようです。double への変換を避けることはできません。これは変更できないアプリケーションの一部であるため、コードが元々存在しなかった余分な小数点以下の桁数を生成している理由を理解しようとしています。
例えば; 次の値から始めて、double に変換します。
..その後、 「バー」は 、デバッガーでは50.846717834472656 になります。
ただし:
...生成: 50.8467178 (デバッガー内)。つまり、余分な値はありません。
最後に余分な数字が表示されるのはなぜですか? どうすればこれを止めることができますか? そして最後に: 上記のいずれかで ToString() を呼び出すと、デバッガーが表示するものとは異なる小数点以下の桁数が出力されることが多いのはなぜですか?