![]() |
|
![]() ![]() ![]() |
|
Вася666 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 29.12.2005 Репутация: нет Всего: нет |
Если мне надо, допустим, написать программу, которая бы исследовала действительное число, и выводила бы сведения на консоль. Например, в ответ на запрос, я ввожу 19,23455 и выводятся что-то типа "целая часть равна 19 дробная часть равна 0,23455". Каким математическим алгоритмом можно выявить целую и дробную часть любого числа?
Единственное, что мне приходит в голову, это вычитать по единицы до тех пор, пока результат этой операции станет отрицательным. Количество произведённых вычитаний, уменьшенное на единицу, будет равно целой части, а последний полученный результат? увеличенный на единицу, будет равен дробной части. Я подумал, может можно ещё как-нибудь... ![]() |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
По-моему, с этим надо не в алгоритмы, а в форум по конкретному языку.
Например, в С: целая часть числа - просто приводим к int. Дробная часть числа - вычитаем из исходного числа целое:
Это для положительных, для отрицательных нужно немного подкрутить. -------------------- ... |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
алгоритм этих действий сильно зависит (можно даже сказать, определяется) от способа представления чисел - в некоторых инструментах один вид, в других - другой, где-то, может, вообще длинные числа поддерживаются на уровне языка
например, в C++ и языках, близких ему по уровню, если не ошибаюсь, придерживаются конструкции m*e m - число от 0 до 1 e - 2 в какой-то степени (+m часто нормализуют, чтобы оно было поближе к 1, соответственно уменьшая e - тогда точность повышается) в этом случае для получения целой части нужно: 1. при отрицательном e - сразу вернуть 0 2. при положительном - "сдвинуть запятую" на e разрядов вправо и отрезать всё, что за ней, а то, что осталось - вернуть уже в виде целого числа но так или иначе, если на уровне языка поддерживаются действительные числа, то и операции выделения целой части тоже в общем, вывод такой: 1. если интересует, как выделять целую часть в каком-то языке - лучше указать язык и задать этот вопрос в соответствующем форуме 2. если интересует какой-нибудь абстрактный случай, когда операции выделения целой части нет, то надо описать, а какие операции с дейсвительными числами есть -------------------- qqq |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |