2011-01-25 10 views
2

私は非常に小さな数字の多くを扱うプログラムを持っています(二重制限の下端に向かって)。少数と正確さの扱い

私のアプリケーションの実行中、これらの数値のいくつかは、「見積もり」がそれほど正確でないことを意味して、徐々に小さくなります。

私の解決策は計算を行う前にスケールアップしてから、再びスケールダウンします。

...しかし、それは私が実際にこれを行うことによって、それ以上の "精度"を得ていますか?

思考?

+1

おそらくそうではありませんが、これを行うことで正規表現の例外を回避している場合は、パフォーマンスに役立つ場合があります。 –

答えて

0

は実際にはの範囲にあり、10^-308(最小正規化された倍率)と10^-324(最小の表現可能な倍率、正規化されていない、すなわち精度が失われていますか?もしそうであれば、それらをスケールアップすることによって、ダブルタイプの指数範囲の限界を回避することによって確かに正確さが得られます。

私は疑問に思っています:どのような種類のアプリケーションが非常に小さい数字を扱っていますか?私はそのようなものを必要とする物理的な規律がないことを知っています。

0

doubleには固定桁数の有効桁数と "power"部分を表す別の固定数バイトがあります。電源部分について

  1. 実際には、あなたは、それゆえ、二つの問題を有していても良いことは、小さな倍精度の限界に近づくことはあるものについてです。 (2の累乗で)スケールアップすると、番号がもはや表現できなくなるのを防ぐのに役立ちます。

  2. 「見積もり」の精度について書くと、小数点以下の桁数には関係なく、有効数字の桁数を参照すると仮定します。非常に小さいが、倍数の下限の意味で小さすぎない数字は、「より普通の」数字と同じ有効数字の桁数を持ちます。 数値の数値精度に関する懸念は、一般的に言えば、結果の絶対サイズではなく数値の計算方法に焦点を当てるべきです。

関連する問題