小数点以下の桁数を指定して丸め
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; }