ラブびあ

ビール。ときどきラブ

小数点以下の桁数を指定して丸め

C#で小数点以下の桁数(digit)を指定して丸める関数です。標準関数は整数丸めなので、digitで10進数で桁シフトして、丸めて、元に戻す、としています。なお、マイナス値について、Floorはゼロに近い方への丸め、Ceilingはゼロから遠い方への丸め、に変更しています。

public static decimal Floor(decimal value, int digit)
{
    int shift = (int)Math.Pow(10, digit);
    return Math.Floor(Math.Abs(value) * shift) * Math.Sign(value) / shift;
}

public static decimal Round(decimal value, int digit)
{
    int shift = (int)Math.Pow(10, digit);
    return Math.Round(value * shift, MidpointRounding.AwayFromZero) / shift;
}

public static decimal Ceiling(decimal value, int digit)
{
    int shift = (int)Math.Pow(10, digit);
    return Math.Ceiling(Math.Abs(value) * shift) * Math.Sign(value) / shift;
}