2009年3月15日日曜日

[.NET]丸め(Math.Round)

金額の計算などで、小数点以下を操作することがあります。
.NETではMathというクラスに小数点以下を丸める機能が提供されています。丸めにもいろいろな考え?(という規格)があるようで、四捨五入と最近接偶数丸めという2種類が提供されています。コードはこんなかんじ。

double[] datas = { 10.1510.2510.3510.4510.55 };

foreach (double data in datas)
{
    //偶数丸め
    double data1 = Math.Round(data1MidpointRounding.ToEven);
    //四捨五入
    double data2 = Math.Round(data1MidpointRounding.AwayFromZero);
    System.Diagnostics.Debug.WriteLine(
        string.Format("入力=[{0}]偶数丸め=[{1}] 四捨五入=[{2}]"datadata1data2));
}


実行結果
入力=[10.15]偶数丸め=[10.2四捨五入=[10.2]
入力=[10.25]偶数丸め=[10.2四捨五入=[10.3]
入力=[10.35]偶数丸め=[10.4四捨五入=[10.4]
入力=[10.45]偶数丸め=[10.4四捨五入=[10.5]
入力=[10.55]偶数丸め=[10.6四捨五入=[10.6]



ちなみに.NET Framework 1.1までは偶数丸めのみで、四捨五入が提供されていないようでうす。

0 件のコメント: