OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 20 Октябрь, 2019 17:37

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 22 Апрель, 2010 16:17 

Зарегистрирован: Среда, 14 Апрель, 2010 15:53
Сообщения: 15
Откуда: Орел
Доброго времени! Есть переменная Y: REAL и нужно ее отправить в функцию, которая просит INTEGER. Пытаюсь ее как-то конвертировать, все на что меня хватило:
Код:
s: INTEGER;
Y: REAL;
s:=Y DIV 1;

Ниче не работает, чувствую себя мегалузером. :cry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DIV
СообщениеДобавлено: Четверг, 22 Апрель, 2010 16:27 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Попробуйте так:s := SHORT(ENTIER(Y));


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DIV
СообщениеДобавлено: Четверг, 22 Апрель, 2010 16:28 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8185
Откуда: Троицк, Москва
s := SHORT(ENTIER(Y));


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 22 Апрель, 2010 18:02 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2931
Откуда: г. Ярославль
В сообщении о языке есть такая фраза (п.6.1., Основные типы):

Цитата:
старший тип включает младший (включение касается значений):

REAL >= SHORTREAL >= LONGINT >= INTEGER >= SHORTINT >= BYTE


Кстати, там же, в п.6.1., есть прямая отсылка к нужной операции:

Цитата:
Основные типы обозначаются предопределенными идентификаторами. Соответствующие операции определены в 8.2, а предопределенные процедуры-функции — в 10.3.


Пришла мысль, что информационная насыщенность убывает по направлению от REAL к BYTE. То есть, тип INTEGER относительно типа REAL является менее насыщенным информационно, поэтому для преобразования старшего типа к младшему надо использовать спец. функцию ENTIER. Ну а в обратную сторону ENTIER не нужен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Май, 2010 11:15 

Зарегистрирован: Среда, 24 Декабрь, 2008 07:11
Сообщения: 13
Не знаю как в КП, но по моему надо выделить биты мантиссы и экспоненты. Затем в зависимости от знака сдвинуть(вправо влево) мантиссу на число позиций указанных в экспоненте. В железе делал таким образом. Почитайте про формат плавающих чисел.

Хотя это вариант для того чтобы понять, что там внутри происходит. Так сказать вручную сделать


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 03 Май, 2010 12:09 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1411
Иван Кузьмицкий писал(а):
Пришла мысль, что информационная насыщенность убывает по направлению от REAL к BYTE. То есть, тип INTEGER относительно типа REAL является менее насыщенным информационно, поэтому для преобразования старшего типа к младшему надо использовать спец. функцию ENTIER. Ну а в обратную сторону ENTIER не нужен.

что вы подразумеваете под "насыщенностью"?
если - мощность множества, "вмещаемого" плавающим типом, то ПРИ РАВНОЙ РАЗРЯДНОСТИ представления, можно подобрать такое соотношение размеров полей плавающего типа, что "количество" вариантов комбинаций битов будет меньше аналогичного целого.
более того, некоторые целые просто нельзя будет представить соответствующим плавающим (с любой точностью приближения).

кстати, именно поэтому, во встроенных системах, при работе с оцифровкой измеряемых значений, предпочитают работать с "фиксированными точками". ведь, по сути, это - целые числа, с "подразумеваемым" масштабным множителем. при этом строго ограничивают (обуславливают "произволом") диапазон изменения величины и переносят его в диапазон представления целых по разрядности данной архитектуры.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB