タグ : Floor

 

.NET 文字列を整数に変換する(小数点以下を切り捨て)

C#、VB.NETでString型の文字列をint型の整数に変換する際、小数点以下を切り捨てるメソッドを作成しました。
 
以前ご紹介した「.NET 小数点以下を切り捨てる」を用いて、文字列以外にもfloat型、double型などからの変換にも対応しております。
 
●文字列を整数に変換する(小数点以下を切り捨て)
        /// <summary>
        /// 値を切り捨て、指定の桁数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <returns>丸められた値</returns>
        public static double Truncate(double value, int decimals)
        {
            // 小数部桁数の10の累乗を取得
            double pow = Math.Pow(10, decimals);

            return 0 <= value ? Math.Floor(value * pow) / pow :
                Math.Ceiling(value * pow) / pow;
        }

        /// <summary>
        /// 値を切り捨て、指定の桁数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <returns>丸められた値</returns>
        public static double Truncate(object value, int decimals)
        {
            return Truncate(Convert.ToDouble(value), decimals);
        }

        /// <summary>
        /// 値の小数点以下を切り捨て、整数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <returns>丸められた値</returns>
        public static int Truncate(object value)
        {
            return Convert.ToInt32(Truncate(value, 0));
        }
 
 
Clipボタンをクリックすると、「ConvertUtility」というクラスがコピーされます。このソースを「ConvertUtility.cs」ファイルにコピーするとすぐご利用いただけます。
 
上記Truncateメソッドは、符号を無視して絶対値を切り捨てる(常に0へ近づく)丸めになりますが、丸めの方法はシステムの要件によって異なりますので、プロジェクトの早い段階で検討することをおススメします。
 
このページでは、上記Truncateメソッドを実際に動かした時の挙動を確認できます。
 
ConvertUtility.Truncate(" 
 "); 
実行結果:
 
 

.NET 整数を切り上げる

C#、VB.NETで整数を切り上げる場合も、「.NET 小数点以下を切り上げる」で作成したRoundUpメソッドが利用できます。
 
        /// <summary>
        /// 値の小数部を切り上げ、指定の桁数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <returns>丸められた値</returns>
        private double RoundUp(double value, int decimals)
        {
            // 小数部桁数の10の累乗を取得
            double pow = Math.Pow(10, decimals);

            return 0 <= value ? Math.Ceiling(value * pow) / pow :
                Math.Floor(value * pow) / pow;
        }
 
 
このページでは、上記RoundUpメソッドを実際に動かした時の挙動を確認できます。
 
小数部桁数に「-3」を指定すると100の位を切り上げます。「1400」⇒「2000」という動きになり、ExcelのROUNDUPメソッドと同じ動作をします。もちろん通常通り小数点以下を切り上げることもできます。
 
RoundUp( 
 , 
 ); 
実行結果:
 
 

.NET 整数を切り捨てる

C#、VB.NETで整数を切り捨てる場合も、「.NET 小数点以下を切り捨てる」で作成したTruncateメソッドが利用できます。
 
        /// <summary>
        /// 値の小数部を切り捨て、指定の桁数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <returns>丸められた値</returns>
        private double Truncate(double value, int decimals)
        {
            // 小数部桁数の10の累乗を取得
            double pow = Math.Pow(10, decimals);

            return 0 <= value ? Math.Floor(value * pow) / pow :
                Math.Ceiling(value * pow) / pow;
        }
 
 
このページでは、上記Truncateメソッドを実際に動かした時の挙動を確認できます。
 
小数部桁数に「-3」を指定すると100の位を切り捨てます。「1500」⇒「1000」という動きになり、ExcelのROUNDDOWNメソッドと同じ動作をします。もちろん通常通り小数点以下を切り捨てることもできます。
 
Truncate( 
 , 
 ); 
実行結果:
 
 

.NET 小数点以下を切り上げる

C#、VB.NETで小数点以下を切り上げる場合は「Math.Floor」と「Math.Ceiling」メソッドを組み合わせ、用途に合わせてメソッドを自作する必要があります。
 
        /// <summary>
        /// 値の小数部を切り上げ、指定の桁数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <returns>丸められた値</returns>
        private double RoundUp(double value, int decimals)
        {
            // 小数部桁数の10の累乗を取得
            double pow = Math.Pow(10, decimals);

            return 0 <= value ? Math.Ceiling(value * pow) / pow :
                Math.Floor(value * pow) / pow;
        }
 
 
上記RoundUpメソッドは、符号を無視して絶対値を切り上げる(常に正負の無限大へ近づく)丸めになります。
 
このページでは、上記RoundUpメソッドを実際に動かした時の挙動を確認できます。
 
値と、小数点以下の桁数を入力し実行ボタンをクリックすると、小数部を指定された桁数に成型した値を実行結果に表示します(小数点第二位までに成型したい場合は小数部桁数へ「2」を指定します)。
 
RoundUp( 
 , 
 ); 
実行結果:
 
 
以下にRoundUpメソッドの挙動をまとめました。「試す」ボタンをクリックすると、書式を入力エリアにコピーしますので、実際の動きを確認することができます。

●書式一覧

内容 書式 結果 試す
100.234を小数点第二位までに成型(小数点第三位を切り上げ) Truncate(100.234, 2); 100.24
-100.234を小数点第二位までに成型(小数点第三位を切り上げ) Truncate(-100.234, 2); -100.24
 

.NET 小数点以下を切り捨てる

C#、VB.NETで小数点以下を切り捨てる場合は、「Math.Floor」と「Math.Ceiling」メソッドを組み合わせ、用途に合わせてメソッドを自作する必要があります。
 
        /// <summary>
        /// 値の小数部を切り捨て、指定の桁数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <returns>丸められた値</returns>
        private double Truncate(double value, int decimals)
        {
            // 小数部桁数の10の累乗を取得
            double pow = Math.Pow(10, decimals);

            return 0 <= value ? Math.Floor(value * pow) / pow :
                Math.Ceiling(value * pow) / pow;
        }
 
 
上記Truncateメソッドは、符号を無視して絶対値を切り捨てる(常に0へ近づく)丸めになります。
 
このページでは、上記Truncateメソッドを実際に動かした時の挙動を確認できます。
 
値と、小数点以下の桁数を入力し実行ボタンをクリックすると、小数部を指定された桁数に成型した値を実行結果に表示します(小数点第二位までに成型したい場合は小数部桁数へ「2」を指定します)。
 
Truncate( 
 , 
 ); 
実行結果:
 
 
以下にTruncateメソッドの挙動をまとめました。「試す」ボタンをクリックすると、書式を入力エリアにコピーしますので、実際の動きを確認することができます。

●書式一覧

内容 書式 結果 試す
100.345を小数点第二位までに成型(小数点第三位を切り捨て) Truncate(100.345, 2); 100.34
-100.345を小数点第二位までに成型(小数点第三位を切り捨て) Truncate(-100.345, 2); -100.34
g h T
 12,640 Total Views