![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Доброго времени суток.
Задача следующая - посчитать, количество какой-то цифры в дробной части числа. Делаю так:
Все замечательно работает на числах, например 5.12312333, однако числа типа 5.7897 не работают. Подскажите, пожалуйста, где тут косяк. Заранее спасибо. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Keeper89, задача нехороша принципиально.
Цифры хранятся в двоичной системе. Десятичные цифры, там точно не представимы. Например 0.1 в двоичной системе это бесконечная дробь. ну и т.д. Здесь уже много раз об этом говорили. здесь есть шанс вообще никогда не завершить цикл ![]() Вашу задачу конечно можно решить, для ограниченного числа. Скажем, для положительных, максимум 9 цифр после запятой, я бы сделал так: Добавлено @ 00:48 это еще что за анахронизм? надеюсь не 16-разрядный компилер. если 16-разрядный, то Это сообщение отредактировал(а) volatile - 17.12.2012, 01:07 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
volatile, спасибо! Может тогда проще перевести в строку и посимвольно посчитать, какая цифра?
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
||||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
bsa, ну да, я имею в виду вариант работы со строкой в общем случае - не лучше?
Это сообщение отредактировал(а) Keeper89 - 17.12.2012, 12:01 |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |