0

只今C#を勉強中。

浮動小数点数または倍精度浮動小数点数を使用できるのに、なぜ誰かが整数を使用するのかわかりません..

フロートは整数と 10 進数を加算/減算します。

float または double は、整数が処理できるというボーナスでできることなら何でも処理するようです。数字も..

ありがとう!

4

8 に答える 8

11

主な理由は、固定精度の小数ではなく整数分数を使用することが多いのと同じ理由です。有理分数では、(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 つの浮動小数点数を比較して等しいかどうかを確認すると、予期しない結果が生じる可能性があることを常に覚えておく必要があります。

于 2012-11-26T13:45:48.767 に答える
1

ここで与えられた答えのほとんどは、数学の概念を直接扱っています。整数を使用する純粋な計算上の理由があります。いくつか頭に浮かぶ:

  1. ループ カウンター、はい、for ループで 10 進数/2 倍を使用できることは知っていますが、本当にその程度の複雑さが必要ですか?
  2. 内部列挙値
  3. 配列インデックス
于 2012-11-26T13:58:06.933 に答える
1

ここでわかるように、さまざまなタイプにはそれぞれ独自のサイズがあります。

たとえば、大規模なデータベースを操作する場合、intまたはfloatは必要なサイズを 2 倍にすることがあります。

于 2012-11-26T13:42:31.777 に答える
0

整数を使用する主な理由は、メモリ消費とパフォーマンスです。

  1. double はほとんどの場合 64b メモリ ブロックに格納され (int の 32b と比較して)、やや複雑な表現基準を使用します (場合によっては実数値の近似値)。
  2. カマキリと指数の計算を必要とする複雑な表現。
  3. ほとんどの場合、浮動小数点演算専用のコプロセッサを使用する必要があります
  4. 整数の補数とシフトを使用して、算術演算を高速化できます。
  5. 配列のインデックス付け、ループ、除算のリマインダーの取得、カウントなどのように、整数を使用することがより適切な (自然な) ユースケースの数。

また、実数を表すために型を使用してこれらすべてを行う必要がある場合、コードはよりエラーが発生しやすくなります。

于 2012-11-26T13:56:01.900 に答える
0

浮動小数点:

コンピューティングでは、浮動小数点は、幅広い値をサポートできる方法で実数の近似値を表す方法を表します。一般に、数値は固定の有効桁数で表され、指数を使用してスケーリングされます。

整数:

コンピューター サイエンスでは、整数整数データ型のデータであり、数学的整数の有限サブセットを表すデータ型です。

したがって、精度は 1 つの引数です。

于 2012-11-26T13:45:48.907 に答える