17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[C#]数値の桁数を調べる

Last updated at Posted at 2016-08-17

数値の桁数を調べる

負数、浮動小数点は扱いません。

対数(log10)

対数(log10)を取って調べる方法です。

public int Digit(int num)
{
    // Mathf.Log10(0)はNegativeInfinityを返すため、別途処理する。
    return (num == 0) ? 1 : ((int)Mathf.Log10(num) + 1);
}
Digit(12345);    // => 5

String.Length

String型のLengthから調べる方法です。

public int Digit(int num)
{
    return (num.ToString().Length);
}
Digit(12345);    // => 5

10で除算した回数

10で除算した回数で調べる方法です。

public int Digit(int num)
{
    int digit = 1;
    for (int i = num; i >= 10; i /= 10) {
        digit++
    }
    return digit;
}
Digit(12345);    // => 5

まとめ

考え方はどの言語でも共通です。
int.ToStringメソッドは遅いので、対数(log10)か10で除算した回数から調べるのが良さそうです。

追記(2016/08/18)

  • 各処理の速度をwasabi_daisukiさんが測定してくました。コメントをご覧ください。
  • 一部ソースコードでshiracamusさんからアドバイスをいただきまして、一部修正しました。
17
9
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?