タグ : 整数

 

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

            return Math.Round(value * pow, mode) / pow;
        }

        /// <summary>
        /// 値を四捨五入し、指定の桁数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <param name="mode">丸める方法</param>
        /// <returns>丸められた値</returns>
        public static double Round(object value, int decimals, MidpointRounding mode)
        {
            return Round(Convert.ToDouble(value), decimals, mode);
        }

        /// <summary>
        /// 値の小数点以下を四捨五入し、整数に丸めます
        /// </summary>
        /// <param name="value"></param>
        /// <param name="mode">丸める方法</param>
        /// <returns>丸められた値</returns>
        public static int Round(object value, MidpointRounding mode)
        {
            return Convert.ToInt32(Round(value, 0, mode));
        }

        /// <summary>
        /// 値の小数点以下を四捨五入し、整数に丸めます
        /// </summary>
        /// <remarks>数値が2つの数値の中間に位置する場合、ゼロから遠いほうの近似値に丸めます</remarks>
        /// <param name="value"></param>
        /// <returns>丸められた値</returns>
        public static int Round(object value)
        {
            return Round(value, MidpointRounding.AwayFromZero);
        }
 
 
Clipボタンをクリックすると、「ConvertUtility」というクラスがコピーされます。このソースを「ConvertUtility.cs」ファイルにコピーするとすぐご利用いただけます。
 
上記Roundメソッドは、一般的な四捨五入(1.5 ⇒ 2、2.5 ⇒ 3のように数値が2つの数値の中間に位置する場合、ゼロから遠いほうの近似値に丸める)を行います。
 
このページでは、上記Roundメソッドを実際に動かした時の挙動を確認できます。
 
ConvertUtility.Round(" 
 "); 
実行結果:
 
 

.NET 文字列が数値であるかをチェックする

C#、VB.NETで文字列が小数を含む数値に変換できるかをチェックします。今回は正規表現を利用して符号なし数値、符号あり数値をチェックする方法をご紹介します。
 
●文字列が符号なし数値(小数を含む)であるかをチェック
        /// <summary>
        /// 文字列が符号なしの小数かどうかを判定します
        /// </summary>
        /// <param name="target">対象の文字列</param>
        /// <returns>文字列が符号なしの小数の場合はtrue、それ以外はfalse</returns>
        public static bool IsUnsignedDecimal(string target)
        {
            return new Regex("^[0-9]*\\.?[0-9]+$").IsMatch(target);
        }
 
 
●文字列が符号あり数値(小数を含む)であるかをチェック
        /// <summary>
        /// 文字列が符号ありの小数かどうかを判定します
        /// </summary>
        /// <param name="target">対象の文字列</param>
        /// <returns>文字列が符号ありの小数の場合はtrue、それ以外はfalse</returns>
        public static bool IsDecimal(string target)
        {
            return new Regex("^[-+]?[0-9]*\\.?[0-9]+$").IsMatch(target);
        }
 
 
以下のエリアでは「IsUnsignedDecimal」と「IsDecimal」メソッドを実際に動かした時の挙動を確認できます。
 
●文字列が符号なし数値(小数を含む)であるかをチェック
IsUnsignedDecimal(" 
 ");    
実行結果:
 
●文字列が符号あり数値(小数を含む)であるかをチェック
IsDecimal(" 
 ");                 
実行結果:
 

.NET 文字列が整数であるかをチェックする

C#、VB.NETで文字列が整数に変換できるかをチェックする方法は何種類かありますが、ここでは正規表現を利用して符号なし整数、符号あり整数をチェックする方法をご紹介します。
 
●文字列が符号なし整数であるかをチェック
        /// <summary>
        /// 文字列が符号なしの整数かどうかを判定します
        /// </summary>
        /// <param name="target">対象の文字列</param>
        /// <returns>文字列が符号なしの整数の場合はtrue、それ以外はfalse</returns>
        public bool IsUnsignedIntegers(string target)
        {
            return new Regex("^[0-9]+$").IsMatch(target);
        }
 
 
●文字列が符号あり整数であるかをチェック
        /// <summary>
        /// 文字列が符号ありの整数かどうかを判定します
        /// </summary>
        /// <param name="target">対象の文字列</param>
        /// <returns>文字列が符号ありの整数の場合はtrue、それ以外はfalse</returns>
        public bool IsIntegers(string target)
        {
            return new Regex("^[-+]?[0-9]+$").IsMatch(target);
        }
 
 
以下のエリアでは「IsUnsignedIntegers」と「IsIntegers」メソッドを実際に動かした時の挙動を確認できます。
 
●文字列が符号なし整数であるかをチェック
IsUnsignedIntegers(" 
 ");    
実行結果:
 
●文字列が符号あり整数であるかをチェック
IsIntegers(" 
 ");                 
実行結果:
 

2進数、8進数文字列を整数に変換する

16進数文字列を整数に変換する」でご紹介した「Convert」クラスを利用すると、16進数だけではなく2進数や8進数の文字列も整数に変換することができます。
 
●2進数文字列 ⇔ 整数
Convert.ToInt32("10011010010", 2);
実行結果:
1234
 
Convert.ToString(1234, 2);
実行結果:
"10011010010"
 
●8進数文字列 ⇔ 整数
Convert.ToInt32("15205", 8);
実行結果:
6789
 
Convert.ToString(6789, 8);
実行結果:
"15205"
 
以下のエリアでは「Convert」クラスのメソッドを実際に動かした時の挙動を確認できます。
 
●2進数文字列 ⇒ 整数
Convert.ToInt32(" 
 ", 2);    
実行結果:
 
●整数 ⇒ 2進数文字列
Convert.ToString( 
 , 2);    
実行結果:
""
 
●8進数文字列 ⇒ 整数
Convert.ToInt32(" 
 ", 8);    
実行結果:
 
●整数 ⇒ 8進数文字列
Convert.ToString( 
 , 8);    
実行結果:
""
 

16進数文字列を整数に変換する

C#、VB.NETで16進数の文字列を整数に変換したり、整数を16進数の文字列に変換するには「Convert」クラスを使うと便利です。
 
●16進数文字列 ⇒ 整数
Convert.ToInt32("FFFF", 16);
実行結果:
65535
 
●整数 ⇒ 16進数文字列
Convert.ToString(65535, 16);
実行結果:
"ffff"
 
以下のエリアでは「Convert」クラスのメソッドを実際に動かした時の挙動を確認できます。
 
●16進数文字列 ⇒ 整数
Convert.ToInt32(" 
 ", 16);    
実行結果:
 
※16進数文字列にはプレフィクス「0x」をつけることができます。
 
●整数 ⇒ 16進数文字列
Convert.ToString( 
 , 16);    
実行結果:
""
 

.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.Round」メソッドを使ってメソッドを自作する必要があります。
 
        /// <summary>
        /// 値を四捨五入します
        /// </summary>
        /// <param name="value"></param>
        /// <param name="decimals">小数部桁数</param>
        /// <param name="mode">丸める方法</param>
        /// <returns>丸められた値</returns>
        private double Round(double value, int decimals,
            MidpointRounding mode)
        {
            // 小数部桁数の10の累乗を取得
            double pow = Math.Pow(10, decimals);

            return Math.Round(value * pow, mode) / pow;
        }
 
 
このページでは、上記Roundメソッドを実際に動かした時の挙動を確認できます。
 
小数部桁数に「-3」を指定すると100の位を四捨五入します。「1500」⇒「2000」という動きになり、ExcelのRoundメソッドと同じ動作をします。もちろん通常通り小数点以下を四捨五入することもできます。
 
Round( 
 , 
 , 
 ); 
実行結果:
 
g h T
 11,132 Total Views