bxdxmx3

きじれてじろあ なきがせすで あぷせとねでぶ

浮動小数点と固定小数点

static void Main(string[] args)
{
    Console.WriteLine((0.1f + 0.2f) == 0.3f);  // float型。  結果:false
    Console.WriteLine((0.1d + 0.2d) == 0.3d);  // double型。 結果:false
    Console.WriteLine((0.1m + 0.2m) == 0.3m);  // decimal型。結果:true
}

理由

浮動小数点で0.1、0.2、0.3は循環小数となる。
浮動小数点数 - Wikipedia
そのため比較結果が異なる。
decimal型は固定小数点なので、比較結果が等しい。

浮動小数点で問題となるところ

金額計算など誤差が発生してはいけない場合。
javascriptなどの固定小数点型がない言語では、
整数の下二桁を小数とみなすなどのやり方で、固定小数点を表現すること。