Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Сколько цифр в числе |
Автор: turtles 17.8.2011, 05:53 | ||
Здравствуйте! У меня вот такой вопрос, по заданию Натуральное положительное число записано в переменную n. Определить и вывести на экран, сколько цифр в числе n. В переменную записал число и вывел результат. А теперь немогу понять как можно подсчитать сколько цифр в числе. как это можно подсчитать?
|
Автор: rodnover 17.8.2011, 06:30 | ||
Может типа такого:
|
Автор: dobrolub 17.8.2011, 06:32 | ||
Натуральное число - целое число. А количество цифр равно количеству разрядов. А количество разрядов это число делений на 10, до тех пор пока результат деления не будет равен 0...
|
Автор: priam220 22.8.2011, 19:04 |
а чем вам предлажуха rodnover'a не понравилась? А если число будет задано не в 10-й системе?.. |
Автор: rodnover 22.8.2011, 20:55 |
Просто, коротко, но неоптимально. ![]() С логарифмом - самая лучшая идея. |
Автор: dobrolub 22.8.2011, 23:20 |
думаю, что ожидаемое решение - моё ![]() Это ведь вопрос из теста, правда? |
Автор: danco0x53 23.8.2011, 15:05 | ||
> Dobrolub: мне кажется, более симпатичным был бы вариант for(n=1; x>0; x /= 10); И еще Вы забыли Math.abs > LSD - а еще не забудем про n=0 К тому же - вы абсолютно точно уверены, что ВСЕ степени десятки после взятия десятичного логарифма не вернут n,999999999999...? Javadoc говорит:
IMHO, rednover - просто, коротко, понятно дурвсем - и без необходимости что-то помнить. |
Автор: LSD 23.8.2011, 15:50 | ||
Натуральные числа не включают 0 ![]()
Для int - уверен ![]() Кстати, в оригинале фигуриует double, так что без изменений будет работать только логарифм ![]() |
Автор: priam220 23.8.2011, 17:27 | ||||
я так понял речь идет о задании, коком то. но ведь речь может идти о колличестве чисел не только в целой части но и в мантиссе, с кажем до заданной точности. безусловно, логорифмирование выглядит очень математично, так что на собеседке, например, будет действовать блондинисто. Но в реальности думаю легче конвертить в строку, просплитать, если надо, конвертнуть в нужную систему исчисления и т.д. Интересно, насколько ресурсоемко вычисление логарифма? По сути это умножение с проверкой. Конвертация в строку, наверное медленнее, меня беспокоит метод getChars в первую очередь. кста, сами джависты вычисляют количество символов в int весьма орригинально и без логарифмов (Integer.class) ![]()
|
Автор: LSD 23.8.2011, 18:50 |
Одна команда ![]() |
Автор: priam220 23.8.2011, 19:34 |
LSD, почему тогда в core не испльзовали логарифмические команды? Я о куске с массивом девяток... Не догадались? ![]() |
Автор: LSD 24.8.2011, 10:05 | ||
Одна команда это в x87, а в Java это цельный вызов native функции со своим немаленьким оверхедом. Не думаю что JIT настолько интеллектуален (по крайней мере во времена написания этого кода), чтобы с оптимизировать это в одно команду. |
Автор: rodnover 24.8.2011, 10:19 |
Почему-то мне кажется, что для такого действия достаточно интеллектуален. С массивом супер просто решение! |