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

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

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

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

28.11.2012, 07:59. Просмотров 778. Ответов 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++
дано целое число m. получить найбольщее целое k при котором 46^k&lt;m Добавлено через 1 минуту извините есть ошибка вот правильная...

Дано целое число (N>0) найти наибольшее целое числа k, квадрат которого не превосходит N:k^2<=N - C++
Помогите пожалуйста сделать задачу. Нужно сделать на С++. Вот условие: Дано целое число (N&gt;0) найти наибольшее целое числа k, квадрат...

Вывод дробного результата - C++
как сделать так,чтобы если получается дробный результат он и выводился,а не целое число? #include &lt;iostream&gt; using namespace std; ...

Возведение дробного числа в степень - C++
Ребят, помогите, пожалуйста. Я Не могу вынести в функцию правильно кусок кода. Так-то все работает, но задача - использовать функцию для...

Возведение дробного числа в большую степень - C++
Есть закон биномиального распределения. Я смог разобраться с подсчетом числа сочетаний для больших n. Теперь проблема заключается в том,...

[C++] Возведение дробного числа в дробную степень - C++
Здравствуйте! Подскажите каким образом можно возвести дробное число в дробную степень? Например: 2.13.5 = 13.4205 ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
28.11.2012, 08:47  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
Цитата Сообщение от LVV
Как числовым методом превратить дробную часть вещественного числа (с произвольным количеством цифр) в целое число?
никак
должен задавать количество знаков после запятой
переведи мне в целое число
1/3= 0.33333333(3) ?
так и здесь

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

Добавлено через 20 минут
могу предложить такой вариант
описываешь свой класс для десятичных дробей
один член целое другой дробное десятичное значения (все целочисленное)
переопределяешь ввод пока вводят цифры то в целое как ввели запятую то ввод в дробное
правда и все другие методы (вывод умножение сложение.....) переопределять придется
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
28.11.2012, 14:44  [ТС] #7
Цитата Сообщение от ValeryS Посмотреть сообщение
правда и все другие методы (вывод умножение сложение.....) переопределять придется
Вот то-то и оно...
Но всё равно спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2012, 14:44
Привет! Вот еще темы с ответами:

Функция формирующая целое значение по строке из нулей и единиц, кодирующей это целое значение в двоичной форме - C++
Напишите функцию, формирующую целое значение по строке из нулей и единиц, кодирующей это целое значение в двоичнойформе, и вызывающую ее...

Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз - C++
задание такое Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз, если у него удалить...

Что такое 'p' в 16-ричной записи дробного числа? - C++
Есть такое число 0x1.ec7ae147ae148p6, вот что здесь обозначает p и где разделение между целой и дробной частью я не пойму , толковых...

Вывод ошибки для дробного и отрицательного числа - C++
Пишу код для программы вычисления факториала числа. Как его изменить так, чтобы при вводе дробного и отрицательного числа выводилась...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.11.2012, 14:44
Ответ Создать тему
Опции темы

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