Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алглрит исследования действительного числа 
:(
    Опции темы
Вася666
Дата 28.6.2006, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 29.12.2005

Репутация: нет
Всего: нет



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



 
PM MAIL   Вверх
Earnest
Дата 28.6.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



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

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

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


--------------------
...
PM   Вверх
maxim1000
Дата 28.6.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 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
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.