155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
1 | |
Из дробного - в целое28.11.2012, 07:59. Показов 4899. Ответов 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: Как числовым методом превратить дробную часть вещественного числа (с произвольным количеством цифр) в целое число?
0
|
28.11.2012, 07:59 | |
Ответы с готовыми решениями:
6
Из дробного числа в целое преобразование дробного в целое Выводит целое значение вместо дробного Ошибка преобразования из дробного типа в целое |
Модератор
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,687
|
|
28.11.2012, 08:23 | 2 |
если дробная часть степень 2 то будет четкое представление
прочитай про формат IEEE 754 например http://ru.wikipedia.org/wiki/Ч... й_точности никак должен задавать количество знаков после запятой переведи мне в целое число 1/3= 0.33333333(3) ? так и здесь
1
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
28.11.2012, 08:47 [ТС] | 3 |
Но ведь речь идёт о конечной (непериодичной) десятичной дроби. Например. 1.345 Как числовыми методами узнать сколько имеется знаков после запятой?
0
|
Модератор
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,687
|
|
28.11.2012, 08:51 | 4 |
а процессор оперирует двоичными дробями и твоя непериодичная запросто может превратится в периодичную
там еще много условностей например нет 0 (есть положительный 0 и отрицательный 0)
1
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
28.11.2012, 11:35 [ТС] | 5 |
Спасибо.
Я так понял, что числовых методов узнать количество знаков после запятой (точки) в десятеричной записи не существует...
0
|
Модератор
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,687
|
|
28.11.2012, 11:59 | 6 |
это форум рубит
скопируй в адресную строку должно пойти или поищи в гугле "Число_двойной_точности" должна быть первая ссылка Добавлено через 20 минут могу предложить такой вариант описываешь свой класс для десятичных дробей один член целое другой дробное десятичное значения (все целочисленное) переопределяешь ввод пока вводят цифры то в целое как ввели запятую то ввод в дробное правда и все другие методы (вывод умножение сложение.....) переопределять придется
1
|
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
|
|
28.11.2012, 14:44 [ТС] | 7 |
0
|
28.11.2012, 14:44 | |
28.11.2012, 14:44 | |
Помогаю со студенческими работами здесь
7
Дано целое число m. получить найбольщее целое k при котором 4^k<m Дано целое число m>1. Получить наибольшее целое k, при котором k3<m Дано целое число N (> 1). Вывести наибольшее целое К, при котором выполняется неравенство Дано целое число m>1. Получить наименьшее целое k, при котором 4^k>m. Блок-схема Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |