浮動小数点数値型には、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は最後に感動をくれる。
以上です。
この記事が誰かの役に立つことを祈ります。