Форум программистов, компьютерный форум CyberForum.ru

Из дробного - в целое - C++

Восстановить пароль Регистрация
 
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
28.11.2012, 07:59     Из дробного - в целое #1
Есть дробное число. Например: double a=123.456;
Нужно убрать в нём запятую, превратив в целое число 123456.
Количество десятичніх знаков (после запятой) неизвестно.
Превращать число в строку и обратно нельзя, нужно всё сделать числовыми методами.
Чисто логически, следует домножать число на 10, пока не останется дробной части:
while (a-int(a))
a*=10;

Но такой "фокус" не проходит из-за особенностей представления вещественных чисел, где 123.456 на самом деле представлено как 123.45599999999(9).
Вопрос 1: Всегда ли вещественное число a.b представлено в памяти ПК как a.(b-1)999999(9) или есть варианты?
Вопрос 2: Как числовым методом превратить дробную часть вещественного числа (с произвольным количеством цифр) в целое число?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,043
28.11.2012, 08:23     Из дробного - в целое #2
Цитата Сообщение от LVV Посмотреть сообщение
Всегда ли вещественное число a.b представлено в памяти ПК как a.(b-1)999999(9) или есть варианты?
если дробная часть степень 2 то будет четкое представление
прочитай про формат IEEE 754
например http://ru.wikipedia.org/wiki/Число_двойной_точности

Цитата Сообщение от LVV Посмотреть сообщение
Как числовым методом превратить дробную часть вещественного числа (с произвольным количеством цифр) в целое число?
никак
должен задавать количество знаков после запятой
переведи мне в целое число
1/3= 0.33333333(3) ?
так и здесь
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
28.11.2012, 08:47  [ТС]     Из дробного - в целое #3
Цитата Сообщение от ValeryS Посмотреть сообщение
Цитата Сообщение от LVV
Как числовым методом превратить дробную часть вещественного числа (с произвольным количеством цифр) в целое число?
никак
должен задавать количество знаков после запятой
переведи мне в целое число
1/3= 0.33333333(3) ?
так и здесь

Но ведь речь идёт о конечной (непериодичной) десятичной дроби. Например. 1.345
Как числовыми методами узнать сколько имеется знаков после запятой?
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,043
28.11.2012, 08:51     Из дробного - в целое #4
Цитата Сообщение от LVV Посмотреть сообщение
Но ведь речь идёт о конечной (непериодичной) десятичной дроби. Например. 1.345
а процессор оперирует двоичными дробями и твоя непериодичная запросто может превратится в периодичную
там еще много условностей например нет 0 (есть положительный 0 и отрицательный 0)
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
28.11.2012, 11:35  [ТС]     Из дробного - в целое #5
Спасибо.
Я так понял, что числовых методов узнать количество знаков после запятой (точки) в десятеричной записи не существует...
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,043
28.11.2012, 11:59     Из дробного - в целое #6
Цитата Сообщение от LVV Посмотреть сообщение
Что-то ссылка не работает
это форум рубит
скопируй в адресную строку
должно пойти
или поищи в гугле "Число_двойной_точности"
должна быть первая ссылка

Добавлено через 20 минут
могу предложить такой вариант
описываешь свой класс для десятичных дробей
один член целое другой дробное десятичное значения (все целочисленное)
переопределяешь ввод пока вводят цифры то в целое как ввели запятую то ввод в дробное
правда и все другие методы (вывод умножение сложение.....) переопределять придется
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2012, 14:44     Из дробного - в целое
Еще ссылки по теме:

Возведение дробного числа в степень C++
C++ Возведение дробного числа в большую степень
Вывод дробного результата C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 239
28.11.2012, 14:44  [ТС]     Из дробного - в целое #7
Цитата Сообщение от ValeryS Посмотреть сообщение
правда и все другие методы (вывод умножение сложение.....) переопределять придется
Вот то-то и оно...
Но всё равно спасибо.
Yandex
Объявления
28.11.2012, 14:44     Из дробного - в целое
Ответ Создать тему
Опции темы

Текущее время: 19:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru