これはアルゴリズムの高速化とストレージスペースの削減をもたらし、これはソフトウェアが過去数十年のハードウェア上で動作するための重要な機能であったと考えていますが、これはまだ重要な機能ですか?計算が正確な合理的な算術で行われた場合、丸め誤差は全くなくなり、致命的なキャンセルやそれに類することをもはや心配する必要がなくなるので、多くのアルゴリズムが単純化されます。標準的なコンピュータアルゴリズムで数値が丸められているのはなぜですか?
答えて
浮動小数点は、任意精度のシンボルパッケージよりもはるかに高速であり、12-16の有効数字は、通常、非整数計算が関係する厳しい科学/エンジニアリングアプリケーションにとって十分です。
多くの数値アルゴリズムでは、十分に機能するには固定精度の数値が必要です。このような計算はハードウェアで実装することができます。数値はレジスタに完全に収まるため、任意の精度計算はソフトウェアで実装する必要があり、両者のパフォーマンスには大きな違いがあります。生き残るために数字を決める人には、Xの量が遅いものであればOKかどうかを問う人に尋ねます。彼らはおそらく「それは完全に実行不可能です」と言うでしょう。
また、任意の精度を持つことは実用的でなく、不可能であることがわかります。たとえば、小数点以下の桁数は、十分に速くなり、いくつかの値を落とすことができます。そして、あなたは正方形に戻ります:丸められた数の問題!
最後に、特定の精度を超える数値は、とにかく問題にならないことがあります。例えば、一般に有効数字のn桁は実験の不確実性のレベルを反映すべきである。
だから、どのアルゴリズムを覚えていますか?
伝統的に、整数演算はハードウェアで実装する方が簡単で安価です(ダイのスペースを少なくして、そこにユニットを追加することができます)。特にDSPセグメントに入ると、これは大きな違いを生むことがあります。
大部分の計算では、答えを正確に計算するために必要な数値のサイズは、計算に手間がかかりすぎるほど大きくなります。多くの計算では、可能である。数十回の反復で単純な3次IIRフィルタのようなものを実行しても、分母に数千ビットの分数が必要であると考えてください。数千回の反復(ほとんど例外的な操作ではない)アルゴリズムを実行すると、宇宙の原子が存在するより多くのビットを分母に必要とする可能性があります。
プログラミング言語ABC
は可能な限り有理数(x/yはxとyが整数)を使用しました。分子と分母が大きい非常にになっていたので
時々、計算が非常に遅くなります。
したがって、分子と分母に何らかの制限を設けないと、それは悪い考えです。
- 1. int(0.9)が0に丸められているのはなぜですか?
- 2. 浮動小数点数はCで丸められますが、JavaScriptやPythonでは丸められないのはなぜですか?まず
- 3. Android:Spinnerに標準のデザインがないのはなぜですか?
- 4. なぜjavax.servlet.http.HttpServletRequestの標準的な定義がないのですか?
- 5. ダブルデータ型の分割に関して、目的関数cが丸められるのはなぜですか?
- 6. なぜjQueryはW3C標準ではないのですか?
- 7. なぜデータフロープログラミングは標準ではないのですか?
- 8. Swiftのプロジェクトで浮遊価値が丸められているのはなぜですか?
- 9. 0.5(小数)の丸めが正確でないのはなぜですか?
- 10. Haskell標準ライブラリにscanl '関数がないのはなぜですか?
- 11. 標準化されていないディストリビューションでscipy normが異なるのはなぜですか?
- 12. DisplayMemeberPathが標準プロパティを受け入れないのはなぜですか?
- 13. 作成されたXMLが標準に準拠していないのはなぜですか?
- 14. 「Uint32」、「int16」など。彼らは標準的なC++ですか?
- 15. 標準的なZIPではどのアルゴリズムが使用されていますか?
- 16. なぜ浮動小数点数を丸めるのですか?
- 17. なぜADecimalNumber.ToString( "#、## 0")は数値を丸めますか?
- 18. ECMAScript標準でObject.setPrototypeOf(...)が存在しないのはなぜですか?
- 19. なぜfloat値を丸めないのですか?int - float数値演算が間違った値を返すのはなぜですか?
- 20. なぜlibstdC++が必要なのですか? C++標準ライブラリの
- 21. toVector(toList、toArray)のような標準的なコレクション型のメソッドがないのはなぜですか?
- 22. なぜ標準設定のeslintではセミコロンを使用しないのがおすすめですか?
- 23. Haskellの標準ライブラリに<<がないのはなぜですか?
- 24. Mac OS X端末アプリケーションで標準入力が入力されていないのはなぜですか?
- 25. XMLでヌル属性値を表すための標準的な方法は?
- 26. CPythonが標準ライブラリに `sphinx.autodoc`を使用しないのはなぜですか?
- 27. 標準に「:nth-of-class」セレクタがないのはなぜですか?
- 28. REST WebサービスにWS- *標準がないのはなぜですか?
- 29. なぜ私の親関数は丸められませんが、別の関数で呼び出すと丸められますか?
- 30. C++の標準ライブラリにハッシュテーブルの実装が含まれていないのはなぜですか?
いいえ、数字は丸められません。 CPUはあなたが与えるすべてのビットを使用します。 10の代わりに2つの指でカウントすると、浮動小数点値を制限された桁数に丸めることによって隠された副作用があります。そうでなければ10/3の問題と違いはありませんが、あなたが3本の指で数えると素晴らしい結果しか得られないものです。 –
すべての数値が合理的であるわけではありません。正確さにかかわらず、コンピュータ上で正確にpiを乗算することはできません。 – Wyzard
不合理な番号http://en.wikipediaを忘れないでください。org/wiki/Irrational_number – MadcoreTom