/// <summary> /// 小数点数以下x桁切り上げ /// </summary> /// <param name="number">数値</param> /// <param name="digitsAfterDecimalPoint">小数点数以下の桁数</param> /// <param name="ct">切り上げ処理の方向</param> /// <returns>小数点数以下x桁切り上げ編集後の文字列</returns> /// <remarks> /// @IT > .NET TIPS > 数値の切り捨て/切り上げを行うには?[C#、VB] /// http://www.atmarkit.co.jp/fdotnet/dotnettips/703mathfloorceiling/mathfloorceiling.html /// 小数点を切り捨て、切り上げ、四捨五入する .NET Tips C#, VB.NET /// http://dobon.net/vb/dotnet/programing/round.html /// </remarks> public static string Ceiling(object number, uint digitsAfterDecimalPoint, CeilingToward ct) { decimal dcm; // decimalにParseしてみる。 if (decimal.TryParse(number.ToString(), out dcm)) { // シフトさせる数を計算。 decimal shift = 1; // 小数点数以下2桁切り上げで、100 for (int i = 0; i < digitsAfterDecimalPoint; i++) { // 10倍 shift *= 10; } // シフトさせる dcm *= shift; // 切り上げ if (ct == CeilingToward.RI) { // 絶対値・一般 if (0 <= dcm) { // 0以上 dcm = Math.Ceiling(dcm); } else { // 0未満 // 数値の整数部分を返す。 #if NETSTD dcm = Math.Truncate(dcm); #else dcm = Microsoft.VisualBasic.Conversion.Int(dcm); #endif } } else { // 大小・算術 dcm = Math.Ceiling(dcm); } // シフトさせる dcm /= shift; // 戻す(0の追加 return(FormatConverter.AddZerosAfterDecimal(dcm, digitsAfterDecimalPoint)); } else { return("0"); } }
public static void CeilingTest(object number, uint digitsAfterDecimalPoint, CeilingToward ct, object expected) { object returnvalue = FormatConverter.Ceiling(number, digitsAfterDecimalPoint, ct); Assert.AreEqual(returnvalue, expected); }
/// <summary> /// 小数点数以下x桁切り上げ /// </summary> /// <param name="number">数値</param> /// <param name="digitsAfterDecimalPoint">小数点数以下の桁数</param> /// <param name="ct">切り上げ処理の方向</param> /// <returns>小数点数以下x桁切り上げ編集後の文字列</returns> /// <remarks> /// @IT > .NET TIPS > 数値の切り捨て/切り上げを行うには?[C#、VB] /// http://www.atmarkit.co.jp/fdotnet/dotnettips/703mathfloorceiling/mathfloorceiling.html /// 小数点を切り捨て、切り上げ、四捨五入する .NET Tips C#, VB.NET /// http://dobon.net/vb/dotnet/programing/round.html /// </remarks> public static string Ceiling(object number, uint digitsAfterDecimalPoint, CeilingToward ct) { decimal dcm; // decimalにParseしてみる。 if (decimal.TryParse(number.ToString(), out dcm)) { // シフトさせる数を計算。 decimal shift = 1; // 小数点数以下2桁切り上げで、100 for (int i = 0; i < digitsAfterDecimalPoint; i++) { // 10倍 shift *= 10; } // シフトさせる dcm *= shift; // 切り上げ if (ct == CeilingToward.RI) { // 絶対値・一般 if (0 <= dcm) { // 0以上 dcm = Math.Ceiling(dcm); } else { // 0未満 dcm = Microsoft.VisualBasic.Conversion.Int(dcm); } } else { // 大小・算術 dcm = Math.Ceiling(dcm); } // シフトさせる dcm /= shift; // 戻す(0の追加 return FormatConverter.AddZerosAfterDecimal(dcm, digitsAfterDecimalPoint); } else { return "0"; } }