Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Количество знаков в числе, Нихочется пистать лишнего 
:(
    Опции темы
oper54
  Дата 30.6.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 13.5.2005

Репутация: 1
Всего: 1



Есть ли готовая функция возвращающая колл-во знаков в числе? Например 100 = 3 знака.
PM MAIL   Вверх
Любитель
Дата 30.6.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Переведи в строку (wsprintf, например) и смотри её длину. Ну плюс учти, что может быть знак числа.


--------------------
PM MAIL ICQ Skype   Вверх
Дрон
Дата 30.6.2005, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



oper54
Десятичный логарифм smile smile smile

Добавлено @ 13:22
Точнее: десятичный логарифм + 1

Код

n = (int)(log10(value)) + 1;


Это сообщение отредактировал(а) Дрон - 30.6.2005, 13:23


--------------------
Да. Именно так.
PM   Вверх
oper54
Дата 30.6.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 13.5.2005

Репутация: 1
Всего: 1



Дрон
спасибо, это как раз то что мне нужно....
PM MAIL   Вверх
Любитель
Дата 30.6.2005, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Его по-моему дольше считать ведь...


--------------------
PM MAIL ICQ Skype   Вверх
Дрон
Дата 30.6.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Любитель
Сложно сказать, что быстрее.

В принципе приближённое вычисление десятичного логарифма можно реализовать и без вычислений с плавающей точкой.


--------------------
Да. Именно так.
PM   Вверх
comcon1
Дата 30.6.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



А если число дробное - тогда log10 не пройдет. Пройдет что-нить типа:
Код

const precision = 0.0000000001;
int znaki(double __inp) {
for (int i=0; i< 12; i++) 
 if ( __inp - floor(__inp  * exp(ln(10)*i)) / exp(ln(10))   < precision ) 
return i + floor(ln(__inp)/ln(10));
}

Тока вместо floor() в условии if лучше взять функцию, производящую человеческое округление, а не обрубание.
ЗЫ. за ошибки не бейте..


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0677 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.