Example #1
0
        /// <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");
            }
        }
Example #2
0
        public static void FloorTest(object number, uint digitsAfterDecimalPoint, FloorToward ft, object expected)
        {
            object returnvalue = FormatConverter.Floor(number, digitsAfterDecimalPoint, ft);

            Assert.AreEqual(returnvalue, expected);
        }
Example #3
0
        /// <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);
        }