只今C#を勉強中。
浮動小数点数または倍精度浮動小数点数を使用できるのに、なぜ誰かが整数を使用するのかわかりません..
フロートは整数と 10 進数を加算/減算します。
float または double は、整数が処理できるというボーナスでできることなら何でも処理するようです。数字も..
ありがとう!
主な理由は、固定精度の小数ではなく整数分数を使用することが多いのと同じ理由です。有理分数では、(1/3) かける 3 は常に 1 です。(1/3) と (2/3) を足すと常に 1 です。(1/3) かける 2 は (2/3) です。
なんで?整数が正確であるように、整数分数は正確であるためです。
しかし、固定精度の実数では、それほどきれいではありません。(1/3) が.33333
の場合、(1/3) の 3 倍は 1 ではありません。また、(2/3) が.66666
の場合、(1/3)+(2/3) は 1 ではありません。しかし、(2/3) が.66667
の場合、(1/3) かける 2 は (2/3) にはなりませんし、1 から (1/3) を引いても (2/3) にはなりません。
そしてもちろん、これを修正するには、より多くの場所を使用する必要があります。(1/3) を正確に表すことのできる 10 進数の桁数はありません。
浮動小数点は固定精度の実数形式であり、上記の固定精度の 10 進数によく似ています。期待する単純なルールに常に従うとは限りません。古典的な論文What Every Computer Scientist Should Know About Floating-Point Arithmeticを参照してください。
あなたの質問に答えるには、最初の概算として、できる限り整数を使用し、必要な場合にのみ浮動小数点数を使用する必要があります。また、浮動小数点数の精度には限界があり、2 つの浮動小数点数を比較して等しいかどうかを確認すると、予期しない結果が生じる可能性があることを常に覚えておく必要があります。
ここで与えられた答えのほとんどは、数学の概念を直接扱っています。整数を使用する純粋な計算上の理由があります。いくつか頭に浮かぶ:
ここでわかるように、さまざまなタイプにはそれぞれ独自のサイズがあります。
たとえば、大規模なデータベースを操作する場合、int
またはfloat
は必要なサイズを 2 倍にすることがあります。
整数を使用する主な理由は、メモリ消費とパフォーマンスです。
また、実数を表すために型を使用してこれらすべてを行う必要がある場合、コードはよりエラーが発生しやすくなります。