예제 #1
0
        /// <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");
            }
        }
예제 #2
0
        public static void CeilingTest(object number, uint digitsAfterDecimalPoint, CeilingToward ct, object expected)
        {
            object returnvalue = FormatConverter.Ceiling(number, digitsAfterDecimalPoint, ct);

            Assert.AreEqual(returnvalue, expected);
        }
예제 #3
0
        /// <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";
            }
        }
예제 #4
0
        public static void CeilingTest(object number, uint digitsAfterDecimalPoint, CeilingToward ct, object expected)
        {
            object returnvalue = FormatConverter.Ceiling(number, digitsAfterDecimalPoint, ct);

            Assert.AreEqual(returnvalue, expected);
        }