Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужно узнать колво цифр в целом числе.

eshth strhrtj Гуру (4194), открыт 20 часов назад
Это мой код.

Насколько это законно?

Можно ли пользоваться таким способом, вместо циклов?

2 ответа
Хэвик Гуру (2607) 20 часов назад
А где код? И кстате, сколько десятилетий уже этой аве?
Изменено: а, прогрузился. Не, такое себе, обычный while будет лучше
eshth strhrtjГуру (4194) 20 часов назад
дополнил
Хэвик Гуру (2607) eshth strhrtj, используй while
Андрей Высший разум (464982) 19 часов назад
Идея абсолютно правильная, реализация ошибочна.

Во первых, при вызове log10 происходит автоматическое преобразование целого в double. Но в double мантисса имеет длину 53 бита. Так что для чисел >= 2⁵³ = 9007199254740992 появится ошибка преобразования и правильность ответа не гарантирована.

Во вторых, ошибочно округление. Не должно быть никаких round. Правильная формула:
 floor(log10(number)) + 1 
Количество знаков натурального числа на 1 больше целой части десятичного логарифма этого числа.

P.S. Ещё один способ без явных циклов: преобразовать число в строку и взять длину этой строки.
eshth strhrtjГуру (4194) 19 часов назад
спасибо
Похожие вопросы