IT業界のすみっこ暮らし

ふと気がついたときの記録

C# : 整数のN位で四捨五入


C# : 整数のN位で四捨五入

/// <summary>
/// 整数のN位で四捨五入
/// Math.Roundは銀行丸めなのでエクセルと同様の四捨五入をする場合はMidpointRounding.AwayFromZeroを設定
/// ex) GetExcelRound(13405, 1) // return 13410
/// ex) GetExcelRound(13405, 2) // return 13400
/// </summary>
/// <param name="value"></param>
/// <param name="digit"></param>
/// <returns></returns>
public static double GetExcelRound(double value, int digit)
{
    var val1 = double.Parse((0.01 * Math.Pow(0.1, digit - 1)).ToString(), System.Globalization.NumberStyles.Float);
    var val2 = 100 * Math.Pow(10, digit - 1);
    
    return Math.Round(value * val1, 1, MidpointRounding.AwayFromZero) * val2;
}


プライバシーポリシー