2011-01-07 4 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

Подсказка (при условии, что это домашнее задание) - разделите число на десять, пока вы не достигнете нуля. – Amarghosh

ответ

8

Независимо от языка программирования:

floor(log10(x))+1

где х ваш номер (> 0).

Если вы хотите обработать 0 и отрицательные числа, я хотел бы предложить что-то вроде этого:

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

+1

Что делать, если x == 0? – Benoit

+0

Если 'x == 0' охранник с' if', это, вероятно, лучший способ справиться с этим, и поместить abs (x) внутри журнала для обработки негативов, для которых 'log10' не определен. –

+0

Что делать, если x не является целым числом? – cHao

4

Преобразовать число в строку и подсчета символов.

0

Я предполагаю, что вы хотите знать, сколько базовых 10 цифр вам нужно представить как двоичное число (например, int).

double x = something(positive); 
double base = 10.0; 
double digits = ceil(log(x + 1.0)/log(base)); 
Смежные вопросы