OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 19 Апрель, 2024 13:12

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 06 Март, 2008 16:35 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Уважаемые специалисты,

В обероне-2, как известно, можно присваивать значение более узкого численного типа переменной более широкого типа в соответствии с правилом:

INTEGER C LONGINT C REAL C LONGREAL

Запрет на присваивание в обратную сторону аргументируется потерей информации.
На практике же это приводит к тому, что 32-разрядное целое мржно присвоить 4-байтной вещественной переменной, а такое присваивание идёт с потерей точности.

Также потеря информации происходит при присваивании записи значения её расширения.

Решены ли эти аопросы в компонентном паскале?

С уважением,
GH.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Март, 2008 18:30 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
В КП REAL то же, что в Обероне LONGREAL - (REAL 64 bit IEEE).

Хотя в сообщении записано всё тоже правило:
REAL >= SHORTREAL >= LONGINT >= INTEGER >= SHORTINT >= BYTE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Март, 2008 18:34 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Потеря информации действительно возможна, однако при преобразовании нет переполнения. :mrgreen:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Март, 2008 19:02 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Не факт, что увеличение разрядности переменных для хранения вещественных значений (SHORTREAL) исключит потерю точности. Вполне возможно, что у REAL те же проблемы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 07 Март, 2008 09:35 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
GameHunter писал(а):
На практике же это приводит к тому, что 32-разрядное целое мржно присвоить 4-байтной вещественной переменной, а такое присваивание идёт с потерей точности.

Округление. Теряем наименее значащие разряды, а не все (в тех случаях, когда запрещено).
GameHunter писал(а):
Также потеря информации происходит при присваивании записи значения её расширения.

Присваивать можно только нерасширяемые записи.
Language Report писал(а):
Assignment compatible
An expression e of type Te is assignment compatible with a variable v of type Tv if one of the following conditions hold:
1. Te and Tv are equal and neither abstract, extensible, or limited record nor open array types;
...


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

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


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

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


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

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