C#

【C#】浮動小数点数値型の違いについて

浮動小数点数値型には、float型, double型, decimal型があります。
今回各型ごとに計算処理で差異が生じるか調査するため、以下のような動作検証を実施しました。

テスト条件
  • 初期値(0.0)を設定
  • for文で0.1ずつ加算し10.0になるまで繰り返す

浮動小数点計算のソースコード

using System;

class test
{
    public static void Main()
    {
        float f = 0.0F;
        double d = 0.0D;
        decimal m = 0.0M;

        Console.WriteLine("\tfloat\t\tdouble\t\tdecimal");
        Console.WriteLine("--------------------------------------------------------");

        for (double num = 0.0D; num <= 10.0D; num += 0.1)
        {
            Console.Write("[" + m + "]");
            Console.Write("\t" + f);
            Console.Write("\t\t" + d);
            Console.WriteLine("\t\t" + m);
            m += 0.1M;
            d += 0.1D;
            f += 0.1F;
        }
    }
}

実行結果

float型とdouble型は、数値にばらつきがあり正確な処理には向かないことが分かった。
しかし、float型の最後に「10」を出力した時には驚きと感動を同時に体感することができた。

まとめ
  • float型とdouble型は、0.0, 1.0 ,2.0の場合0, 1, 2と出力する。
  • float型は0.8から性能が劣化する。
  • double型は6.0から性能が劣化する。
  • decimal型は優秀。
  • 扱うことが出来るデータ量が大きければ、その分正確な数値を返すことが出来る。
  • floatは最後に感動をくれる。

以上です。
この記事が誰かの役に立つことを祈ります。