Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Алглрит исследования действительного числа


Автор: Вася666 28.6.2006, 16:57
Если мне надо, допустим, написать программу, которая бы исследовала действительное число, и выводила бы сведения на консоль. Например, в ответ на запрос, я ввожу 19,23455 и выводятся что-то типа "целая часть равна 19   дробная часть равна 0,23455". Каким математическим алгоритмом можно выявить целую и дробную часть любого  числа?
Единственное, что мне приходит в голову, это вычитать по единицы до тех пор, пока результат этой операции станет отрицательным. Количество произведённых вычитаний, уменьшенное на единицу, будет равно целой части, а последний полученный результат? увеличенный на единицу, будет равен дробной части. Я подумал, может можно ещё как-нибудь...  smile 



 

Автор: Earnest 28.6.2006, 17:09
По-моему, с этим надо не в алгоритмы, а в форум по конкретному языку.
Например, в С: целая часть числа - просто приводим к int. Дробная часть числа - вычитаем из исходного числа целое:
Код

double real_number = ...;
int int_part = (int)real_number;
double fractional = real_number - int_part;

Это для положительных, для отрицательных нужно немного подкрутить.
 

Автор: maxim1000 28.6.2006, 17:21
алгоритм этих действий сильно зависит (можно даже сказать, определяется) от способа представления чисел - в некоторых инструментах один вид, в других - другой, где-то, может, вообще длинные числа поддерживаются на уровне языка

например, в C++ и языках, близких ему по уровню, если не ошибаюсь, придерживаются конструкции m*e
m - число от 0 до 1
e - 2 в какой-то степени
(+m часто нормализуют, чтобы оно было поближе к 1, соответственно уменьшая e - тогда точность повышается)

в этом случае для получения целой части нужно:
1. при отрицательном e - сразу вернуть 0
2. при положительном - "сдвинуть запятую" на e разрядов вправо и отрезать всё, что за ней, а то, что осталось - вернуть уже в виде целого числа

но так или иначе, если на уровне языка поддерживаются действительные числа, то и операции выделения целой части тоже

в общем, вывод такой:
1. если интересует, как выделять целую часть в каком-то языке - лучше указать язык и задать этот вопрос в соответствующем форуме

2. если интересует какой-нибудь абстрактный случай, когда операции выделения целой части нет, то надо описать, а какие операции с дейсвительными числами есть 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)