2011-01-07 8 views
0

ユーザーが指定した数値または桁数の桁数をカウントします。プログラミング言語の独立C++で指定された数字の桁数を計算する方法

+1

具体的にはどういう意味ですか?あいまいな質問をすると、人々はそれに答えることはまずありません。 – templatetypedef

+1

http://stackoverflow.com/questions/554521/how-can-i-count-the-digits-in-an-integer-without-a-string-cast –

+3

ヒント(これは宿題であると仮定します) - 番号を分割するあなたがゼロになるまで10回。 – Amarghosh

答えて

8

:xはあなたの番号である

floor(log10(x))+1

(> 0)。

あなたは0と負の数を処理したい場合は、私はこのような何かをお勧めしたい:

x == 0 ? 1 : floor(log10(abs(x)))+1

+1

x == 0の場合はどうなりますか? – Benoit

+0

'x == 0'が' if'でガードしている場合は、これを処理し、 'log10'が定義されていないネガを扱うためにログの中にabs(x)を入れるのが最善の方法でしょう。 –

+0

xが整数でない場合はどうなりますか? – cHao

4

数値を文字列に変換し、文字をカウントします。

0

2進数(intなど)を表すために必要な基数10桁の数を知りたいと仮定します。

double x = something(positive); 
double base = 10.0; 
double digits = ceil(log(x + 1.0)/log(base)); 
関連する問題