/// <summary> /// 小数点数以下x桁切り捨て /// </summary> /// <param name="number">数値</param> /// <param name="digitsAfterDecimalPoint">小数点数以下の桁数</param> /// <param name="ft">切り捨て処理の方向</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 Floor(object number, uint digitsAfterDecimalPoint, FloorToward ft) { 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 (ft == FloorToward.RZ) { // 絶対値・一般 if (0 <= dcm) { // 0以上 dcm = Math.Floor(dcm); } else { // 0未満 dcm = Math.Truncate(dcm); //dcm = Microsoft.VisualBasic.Conversion.Fix(dcm); } } else { // 大小・算術 dcm = Math.Floor(dcm); } // シフトさせる dcm /= shift; // 戻す(0の追加 return(FormatConverter.AddZerosAfterDecimal(dcm, digitsAfterDecimalPoint)); } else { return("0"); } }
public static void FloorTest(object number, uint digitsAfterDecimalPoint, FloorToward ft, object expected) { object returnvalue = FormatConverter.Floor(number, digitsAfterDecimalPoint, ft); Assert.AreEqual(returnvalue, expected); }
/// <summary> /// 小数点数以下x桁切り捨て /// </summary> /// <param name="number">数値</param> /// <param name="digitsAfterDecimalPoint">小数点数以下の桁数</param> /// <param name="ft">切り捨て処理の方向</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 Floor(object number, uint digitsAfterDecimalPoint, FloorToward ft) { 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 (ft == FloorToward.RZ) { // 絶対値・一般 if (0 <= dcm) { // 0以上 dcm = Math.Floor(dcm); } else { // 0未満 dcm = Math.Truncate(dcm); //dcm = Microsoft.VisualBasic.Conversion.Fix(dcm); } } else { // 大小・算術 dcm = Math.Floor(dcm); } // シフトさせる dcm /= shift; // 戻す(0の追加 return FormatConverter.AddZerosAfterDecimal(dcm, digitsAfterDecimalPoint); } else { return "0"; } }