10進数の代わりにdoubleを使用する必要があるのはいつですか?

ジェイミー・イデ

代わりにdouble(またはfloatを使用することの3つの利点を挙げられdecimalます:

  1. 使用するメモリが少なくなります。
  2. 浮動小数点演算はプロセッサによってネイティブにサポートされているため、より高速です。
  3. より広い範囲の数値を表すことができます。

しかし、これらの利点は、モデリングソフトウェアに見られるような、計算集約型の操作にのみ適用されるようです。もちろん、財務計算などの精度が必要な場合は、doubleを使用しないでください。それで、「通常の」アプリケーションの代わりにこれまでに選択double(またはfloatする実際的な理由はありdecimalますか?

追加するために編集:すべての素晴らしい応答をありがとう、私はそれらから学びました。

もう1つの質問:doublesは実数をより正確に表すことができると指摘した人もいます。宣言されたとき、私はそれらが通常より正確にそれらを表すと思います。しかし、浮動小数点演算が実行されると、精度が(場合によっては大幅に)低下する可能性があるというのは本当のことですか?

ノルドール

あなたは利点をかなりうまくまとめたと思います。ただし、1つのポイントが欠けています。このdecimalタイプは、基数10の数値(たとえば、通貨/財務計算で使用される数値)を表す場合にのみより正確になります。一般に、このdoubleタイプは、少なくとも同じくらいの精度(間違っている場合は誰かが私を訂正する)と、任意の実数に対して間違いなくより速い速度を提供します。簡単な結論は次のとおりです。どちらを使用するかを検討するときは提供される精度doubleが必要でない限り、常に使用してくださいbase 10decimal

編集:

操作後の浮動小数点数の精度の低下に関する追加の質問に関しては、これはもう少し微妙な問題です。実際、精度(ここでは精度と同じ意味でこの用語を使用します)は、各操作が実行された後、着実に低下します。これは2つの理由によるものです。

  1. 特定の数値(最も明らかに小数)を浮動小数点形式で実際に表すことができないという事実
  2. 手作業で計算する場合と同じように、丸め誤差が発生します。ただし、これらのエラーが十分に重要であるかどうかは、コンテキスト(実行している操作の数)に大きく依存します。

いずれの場合も、理論的には同等であるはずの2つの浮動小数点数を比較する場合(ただし、異なる計算を使用して到達した場合)、ある程度の許容誤差を許容する必要があります(変動は大きいが、通常は非常に小さい)。 。

精度のエラーが発生する可能性がある特定のケースの詳細な概要については、ウィキペディアの記事の「精度」セクションを参照してください最後に、マシンレベルでの浮動小数点数/演算について真剣に詳細な(そして数学的な)議論が必要な場合は、よく引用される記事「すべてのコンピューター科学者が浮動小数点演算について知っておくべきこと」を読んでみてください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Z3で変数の代わりに関数を使用する必要があるのはいつですか?

分類Dev

React状態変数の代わりにMobXobservableを使用する必要があるのはいつですか?

分類Dev

新しい例外の代わりにThrowableを使用する必要があるのはいつですか?

分類Dev

boolの代わりにatomic <bool>を本当に使用する必要があるのはいつですか?

分類Dev

UIButtonの代わりにanyObjectを迅速に使用する必要があるのはいつですか?

分類Dev

AngularでrouterLinkの代わりにhrefを使用する必要があるのはいつですか?

分類Dev

@Serviceの代わりに@Componentを使用する必要があるのはいつですか?

分類Dev

JSONFieldの代わりにHStoreFieldを使用する必要があるのはいつですか?

分類Dev

items()の代わりにiteritems()を使用する必要があるのはいつですか?

分類Dev

Forループの代わりにマップを使用する必要があるのはいつですか?

分類Dev

クラスの代わりに構造体を使用する必要があるのはいつですか?

分類Dev

Memcachedの代わりにMemcacheを使用する必要があるのはいつですか?

分類Dev

クラスの代わりに構造体を使用する必要があるのはいつですか?

分類Dev

クラスの代わりに構造体を使用する必要があるのはいつですか?

分類Dev

GL_RGB8の代わりにGL_SRGB8を使用する必要があるのはいつですか?

分類Dev

std :: thread :: spawnの代わりにstd :: thread :: Builderを使用する必要があるのはいつですか?

分類Dev

os.popenの代わりにsubprocess.Popenを使用する必要があるのはいつですか?

分類Dev

ドメインの代わりに列挙型を使用する必要があるのはいつですか?

分類Dev

Swift:「let」の代わりに「var」を使用する必要があるのはいつですか?

分類Dev

Kotlinの演算子を使用する代わりに、プラス、マイナス、回の関数を使用する必要があるのはいつですか?

分類Dev

メソッド内でローカル変数の代わりに最終変数を使用する必要があるのはいつですか

分類Dev

ReduxThunkの代わりにReduxSagaを使用する必要があるのはいつですか?また、ReduxSagaの代わりにReduxThunkを使用する必要があるのはいつですか?

分類Dev

SQL Server 2008で関数の代わりにストアドプロシージャを使用する必要があるのはいつですか?

分類Dev

クラスで関数foo()の代わりにfoo()を使用する必要があるのはなぜですか?

分類Dev

Enumの代わりにEnumMetaをサブクラス化する必要があるのはいつですか?

分類Dev

タスクを待つために、Async.AwaitTaskの代わりにAsync.AwaitIAsyncResultを使用する必要があるのはいつですか?

分類Dev

オブジェクトの代わりにタプルを使用する必要があるのはいつですか。その逆も同様です。

分類Dev

関数の代わりにVarを使用するのはいつですか?

分類Dev

csvファイルを読み取るためにpandas.read_csvの代わりにnumpy.genfromtxtを使用する必要があるのはいつですか?

Related 関連記事

  1. 1

    Z3で変数の代わりに関数を使用する必要があるのはいつですか?

  2. 2

    React状態変数の代わりにMobXobservableを使用する必要があるのはいつですか?

  3. 3

    新しい例外の代わりにThrowableを使用する必要があるのはいつですか?

  4. 4

    boolの代わりにatomic <bool>を本当に使用する必要があるのはいつですか?

  5. 5

    UIButtonの代わりにanyObjectを迅速に使用する必要があるのはいつですか?

  6. 6

    AngularでrouterLinkの代わりにhrefを使用する必要があるのはいつですか?

  7. 7

    @Serviceの代わりに@Componentを使用する必要があるのはいつですか?

  8. 8

    JSONFieldの代わりにHStoreFieldを使用する必要があるのはいつですか?

  9. 9

    items()の代わりにiteritems()を使用する必要があるのはいつですか?

  10. 10

    Forループの代わりにマップを使用する必要があるのはいつですか?

  11. 11

    クラスの代わりに構造体を使用する必要があるのはいつですか?

  12. 12

    Memcachedの代わりにMemcacheを使用する必要があるのはいつですか?

  13. 13

    クラスの代わりに構造体を使用する必要があるのはいつですか?

  14. 14

    クラスの代わりに構造体を使用する必要があるのはいつですか?

  15. 15

    GL_RGB8の代わりにGL_SRGB8を使用する必要があるのはいつですか?

  16. 16

    std :: thread :: spawnの代わりにstd :: thread :: Builderを使用する必要があるのはいつですか?

  17. 17

    os.popenの代わりにsubprocess.Popenを使用する必要があるのはいつですか?

  18. 18

    ドメインの代わりに列挙型を使用する必要があるのはいつですか?

  19. 19

    Swift:「let」の代わりに「var」を使用する必要があるのはいつですか?

  20. 20

    Kotlinの演算子を使用する代わりに、プラス、マイナス、回の関数を使用する必要があるのはいつですか?

  21. 21

    メソッド内でローカル変数の代わりに最終変数を使用する必要があるのはいつですか

  22. 22

    ReduxThunkの代わりにReduxSagaを使用する必要があるのはいつですか?また、ReduxSagaの代わりにReduxThunkを使用する必要があるのはいつですか?

  23. 23

    SQL Server 2008で関数の代わりにストアドプロシージャを使用する必要があるのはいつですか?

  24. 24

    クラスで関数foo()の代わりにfoo()を使用する必要があるのはなぜですか?

  25. 25

    Enumの代わりにEnumMetaをサブクラス化する必要があるのはいつですか?

  26. 26

    タスクを待つために、Async.AwaitTaskの代わりにAsync.AwaitIAsyncResultを使用する必要があるのはいつですか?

  27. 27

    オブジェクトの代わりにタプルを使用する必要があるのはいつですか。その逆も同様です。

  28. 28

    関数の代わりにVarを使用するのはいつですか?

  29. 29

    csvファイルを読み取るためにpandas.read_csvの代わりにnumpy.genfromtxtを使用する必要があるのはいつですか?

ホットタグ

アーカイブ