Utility-DecimalHelperクラス。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyApp.Utility { /// <summary> /// decimalヘルパークラス /// </summary> public class DecimalHelper { #region メソッド #region 数値のN捨N+1入を行います /// <summary> /// 数値のN捨N+1入を行います /// </summary> /// <param name="data">まるめ対象データ</param> /// <param name="decimalFigure">まるめ対象小数桁</param> /// <param name="roundNumber">まるめ対象数値(0〜8)</param> /// <returns>まるめ処理実施後の数値</returns> public static decimal Round(decimal data, Int32 decimalFigure, Int32 roundNumber) { //パラメータチェック if ((roundNumber < 0) || (roundNumber > 8)) { throw new ArgumentException("param:[roundNumber]が対象外の値"); } //数値のN捨N+1入処理 decimal calcResult = 0; decimal calcDigit = (decimal)System.Math.Pow(10, (double)decimalFigure); decimal calcTmp = (decimal)1 - ((decimal)(roundNumber + 1) / 10); if (data > 0) { calcResult = Math.Floor((data * calcDigit) + calcTmp) / calcDigit; } else { calcResult = Math.Ceiling((data * calcDigit) - calcTmp) / calcDigit; } //まるめ処理実施後の数値を返す return calcResult; } #endregion #region 数値を指定の第N位で切り捨てる /// <summary> /// 数値を指定の第N位で切り捨てる /// </summary> /// <param name="data">切り捨て対象データ</param> /// <param name="decimalFigure">切捨て対象小数桁</param> /// <returns>切り捨て処理実施後の数値</returns> public static decimal Floor(decimal data, Int32 decimalFigure) { //数値を指定の第N位で切り捨て処理 decimal calcResult = 0; decimal calcDigit = (decimal)System.Math.Pow(10, (double)decimalFigure); if (data > 0) { calcResult = Math.Floor(data * calcDigit) / calcDigit; } else { calcResult = Math.Ceiling(data * calcDigit) / calcDigit; } //切り捨て処理実施後の数値を返す return calcResult; } #endregion #endregion } }