こんにちは、今日はC#で数値の特定の桁の値を取得する方法についてまとめていきます。
ToString()を使用して文字列に変換する
ToString()関数を呼び出すとstring型で値が返ってくるため、上位の桁から順に配列に格納されます。
以下の例では千の位の値を取りたい場合はstr[1]にアクセスするとchar型で2が取得できます。
マイナスの値の場合は先頭のstr[0]に「-」が入ります。
int num = 12345;
string str = num.ToString();
除算と剰余演算を用いる
以下の処理を各桁の値が求められるまで繰り返す方法で、各桁の値を求めることもできます。
こちらの方法の方が前述のToString()を用いる方法よりも高速です。
- 10で割った余りで一番下位の位の値を求める
- 10で割って既に値を求めた位の値をカット
以下の例ではGetNthDigitNum関数の第一引数に元となる数値を、第二引数に下位から数えた取得する桁数を指定すると、その桁の値が返ってきます。
指定した桁数が元の数値の桁数より大きい場合は0が返ります。
int GetNthDigitNum(int num, int digit)
{
int currentDigitNum = 1;
num = System.Math.Abs(num);
while (num > 0)
{
if (currentDigitNum == digit) return num % 10;
num /= 10;
currentDigitNum++;
}
return 0;
}
リンク
Reference Source
https://referencesource.microsoft.com/#mscorlib/system/int32.cs,a779f63c06961b65,references