演習 - 浮動小数点型を検出する

完了

この演習では、浮動小数点データ型を扱い、各データ型の間の微妙な違いについて学習します。

浮動小数点は、小数点の右側にある数値を表す単純な値の型です。 整数とは異なり、指定された浮動小数点型に格納できる最大値と最小値以外にも考慮事項があります。

浮動小数点型の評価

まず、それぞれの型で許可される有効桁数を考慮する必要があります。 有効桁数は、小数点の後に格納できる値の位の数です。

次に、値の格納方法と、値の精度に対する影響を考慮する必要があります。 たとえば、decimal が 10 進数 (基数 10) 形式で格納されるのに対し、float および double の値は、バイナリ (基数 2) 形式で内部的に格納されます。 なぜこれが重要なのでしょうか。

バイナリ浮動小数点値に対して算術演算を実行すると、10 進数 (基数 10) 演算に慣れている場合には、生成される結果に驚くかもしれません。 多くの場合、バイナリ浮動小数点演算は実際の値の近似値です。 したがって、floatdouble は、小さいメモリ占有領域を使用して大量の数値を格納できるため便利です。 ただし、floatdouble は、近似が有効な場合にのみ使用する必要があります。 たとえば、ビデオ ゲームで雪玉の飛び散りを計算する場合は、千分のいくつかで十分です。

より正確な回答が必要な場合は、decimal を使用する必要があります。 decimal 型の値にはそれぞれ比較的大きなメモリ占有領域がありますが、算術演算を実行すると、より正確な結果が得られます。 そのため、財務データを使用する場合や計算で正確な結果が必要な場合には、decimal を使用する必要があります。

各符号付き浮動型に対して MinValue プロパティと MaxValue プロパティを使用する

  1. 前の演習のコードをすべて削除するか、行コメント演算子 // を使ってコメントアウトしてください。

  2. さまざまなデータ型の値範囲を表示するには、Visual Studio Code Editor で次のようにコードを更新します。

Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float  : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");
  1. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

    コードをビルドまたは実行する前に、Program.cs ファイルを保存する必要があります。

  2. [エクスプローラー] パネルで、TestProject フォルダーの場所にあるターミナルを開くには、TestProject を右クリックし、[統合ターミナルで開く] を選択します。

    ターミナル パネルが開き、ターミナルが TestProject フォルダーの場所に対して開かれていることを示すコマンド プロンプトが含まれているはずです。

  3. コードを実行するには、ターミナルのコマンド プロンプトで、「dotnet run」と入力し、Enter キーを押します。

    "Couldn't find a project to run," というメッセージが表示された場合は、ターミナルのコマンド プロンプトに期待される TestProject フォルダーの場所が表示されていることを確かめます。 例: C:\Users\someuser\Desktop\csharpprojects\TestProject>

    次の出力が表示されます。

    Floating point types:
    float  : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision)
    double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision)
    decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)
    

ご覧のように、float および doubledecimal とは異なる表記法を使用して、可能な最大値と最小値を表します。 しかし、この表記は何を意味するのでしょうか。

大きな浮動小数点値の解読

浮動小数点型は有効桁数を使用して大きな数値を保持できるため、"指数表記" を使用して値を表すことができます。指数表記は、"の 10 乗" を表す科学的表記法です。したがって、5E+2 のような値は、5 * 10^2、つまり 5 x 102 と同等であるため、値 500 になります。

要点

  • 浮動小数点型は、小数部分の数を保持できる単純な値データ型です。
  • アプリケーションに適切な浮動小数点型を選択するには、保持できる最大値と最小値の他にも考慮すべきことがあります。 小数点の後に保持できる値の数、数値の格納方法、および内部ストレージが算術演算の結果に与える影響についても考慮する必要があります。
  • 浮動小数点値は、数値が特に大きくなる場合に "指数表記" を使用して表すことができます。
  • コンパイラとランタイムで decimal を処理する方法は、float または double と比べて根本的な違いがあります。算術演算でどの程度の精度が必要かを判断する場合は特にそうです。

知識を確認

1.

銀行預金の処理に使用するのに最適なデータ型はどれですか?