| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > сколько цифр в числе |
| Автор: CrasyMen 8.5.2007, 18:34 |
| как узнать сколько цифр в числе? например: число 10000 - 5 цифр |
| Автор: _hunter 8.5.2007, 18:42 |
| дели число на 10 пока результат > 1 -- получиш чсло знаков - 1. |
| Автор: Klin 8.5.2007, 19:51 | ||
Ну или если извращаться то можно так:
|
| Автор: CrasyMen 8.5.2007, 20:00 |
| Klin, Спасибо. Этот способ лучше предыдущего (имхо). |
| Автор: fish9370 8.5.2007, 20:12 | ||
несмотря на то что, этот способ проще, я бы предпочел первый вариант - он быстрее.. и в нем нет привязки к VCL.. |
| Автор: CrasyMen 8.5.2007, 20:17 |
я догадался, просто не хочу усложнять себе жизнь. Для курсовой сойдет. |
| Автор: Voldemar2004 8.5.2007, 20:30 | ||||
|
| Автор: Klin 8.5.2007, 20:58 |
Не лучше, а легче. _hunter и Voldemar2004, предложили более правильный путь решения, поскольку в моем случае идет преобразование типа, а у них лишь работа с ним. |
| Автор: Voldemar2004 8.5.2007, 21:43 |
| И соответственно будет работать везде.Но потом будет легче, понимание приходит не сразу...опять же привязка к VCL... |
| Автор: Жуть 9.5.2007, 11:34 | ||
а что если посчитать десятичный логарифм?
|
| Автор: Voldemar2004 9.5.2007, 11:43 |
| Жуть, оригинально |
| Автор: Klin 9.5.2007, 12:01 |
Зачем так усложнять? Самый простой способ - это деление на 10. |
| Автор: Жуть 9.5.2007, 12:34 | ||
Я просто предложил альтернативу... Продолжая оригинальничать (реализация для машин с 32битным int, оптимизация в сторону меньших чисел):
|
| Автор: fish9370 9.5.2007, 12:48 |
| жуть, что-то тебя понесло сказал для 32битных int, а сам попетлял в дебри.. что это за 32битный int такой 10000000000 ? по-моему ты гонишь, тут парни давно правильное решение дали.. а ты предлагаешь что-то совсем бредовое.. |
| Автор: Klin 9.5.2007, 12:49 |
| Жуть, если вы всегда так оригинальны, вы очень точно подобрали ник. |
| Автор: fish9370 9.5.2007, 13:12 | ||||
бредовость в том, что от структурного программирования мы перешли к линейному.. я конечно не имею ничего против, чтобы ты для себя так делал, но было бы плохо если бы кто-то вооружился твоим методом.. да и еще, давно хотел тебе сказать..
проверка на отрицательность тут излишняя.. достаточно было value=abs(value); |
| Автор: Жуть 9.5.2007, 13:23 |
В каком месте? Требую в студию определение "линейного программирования"(ато мне что-то сразу вспоминаеться Тахо и целевая ф-ция и т.д.) ! И точное определение того, где я отхожу от структурного! (можно написать подобный метод и для ООП) Легко себе представить набор чисел, для которых заранее известно, что 90% времени они могут принимать значения в каком-л диапазоне, напр 1000 - 1000000 и когда надо вычислять их длинну ну очень часто, и тогда можно написать "каскадированный if" при котором будет значительный выигрыш во времени по сравнению с циклом... Для разных аспектов одной и той же задачи есть разные решения. |
| Автор: W4FhLF 9.5.2007, 13:24 |
| lg(|int|) + 1 Добавлено через 1 минуту и 2 секунды + округлить ессно |
| Автор: Жуть 9.5.2007, 13:28 |
| 2W4FhLF, http://forum.vingrad.ru/index.php?showtopic=150236&view=findpost&p=1127122, засмеяли... |
| Автор: fish9370 9.5.2007, 14:03 | ||
ну хватит.. я же сказал, для себя ты должен делать как умеешь.. каскадированный if я считаю тут неуместным.. современные проыессоры с их многоуровневыми конвеерами и кэшами циклы хавают не хуже чем твой каскадированный if.. хочешь выигрыша - пиши на АСМе.. и никто тебя за первый твой вариант не засмеивал.. |
| Автор: W4FhLF 9.5.2007, 14:10 |
Они наверное не знают, что для этого никаких специальных и громоздких функций не надо, ибо вычисление логарифма поддерживается аппратно, т.е. существует специальные инструкции процессора. Поэтому никаких сложностей, тормозов и наворотов. |