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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 241
#1

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

28.11.2012, 07:59. Просмотров 756. Ответов 6
Метки нет (Все метки)

Есть дробное число. Например: 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: Как числовым методом превратить дробную часть вещественного числа (с произвольным количеством цифр) в целое число?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 07:59     Из дробного - в целое
Посмотрите здесь:

Округление дробного числа до целого в большую сторону. C++
Дано целое число m. получить найбольщее целое k при котором 4^k<m C++
C++ [C++] Возведение дробного числа в дробную степень
Вывод ошибки для дробного и отрицательного числа C++
C++ Математические операции для дробного числа ( заданного структурой )
Возведение дробного числа в степень C++
C++ Условие в функции, некорректно проходит проверка дробного числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6453 / 4919 / 451
Регистрация: 14.02.2011
Сообщений: 16,320
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
Сообщений: 241
28.11.2012, 08:47  [ТС]     Из дробного - в целое #3
Цитата Сообщение от ValeryS Посмотреть сообщение
Цитата Сообщение от LVV
Как числовым методом превратить дробную часть вещественного числа (с произвольным количеством цифр) в целое число?
никак
должен задавать количество знаков после запятой
переведи мне в целое число
1/3= 0.33333333(3) ?
так и здесь

Но ведь речь идёт о конечной (непериодичной) десятичной дроби. Например. 1.345
Как числовыми методами узнать сколько имеется знаков после запятой?
ValeryS
Модератор
6453 / 4919 / 451
Регистрация: 14.02.2011
Сообщений: 16,320
28.11.2012, 08:51     Из дробного - в целое #4
Цитата Сообщение от LVV Посмотреть сообщение
Но ведь речь идёт о конечной (непериодичной) десятичной дроби. Например. 1.345
а процессор оперирует двоичными дробями и твоя непериодичная запросто может превратится в периодичную
там еще много условностей например нет 0 (есть положительный 0 и отрицательный 0)
LVV
56 / 56 / 3
Регистрация: 15.02.2010
Сообщений: 241
28.11.2012, 11:35  [ТС]     Из дробного - в целое #5
Спасибо.
Я так понял, что числовых методов узнать количество знаков после запятой (точки) в десятеричной записи не существует...
ValeryS
Модератор
6453 / 4919 / 451
Регистрация: 14.02.2011
Сообщений: 16,320
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++ Функция формирующая целое значение по строке из нулей и единиц, кодирующей это целое значение в двоичной форме
Написать функцию, обеспечивающую интерактивный ввод с клавиатуры дробного числа C++
Что такое 'p' в 16-ричной записи дробного числа? C++

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

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

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