OberonCore https://forum.oberoncore.ru/ |
|
Потери информации при присваивании https://forum.oberoncore.ru/viewtopic.php?f=30&t=901 |
Страница 1 из 1 |
Автор: | GameHunter [ Четверг, 06 Март, 2008 16:35 ] |
Заголовок сообщения: | Потери информации при присваивании |
Уважаемые специалисты, В обероне-2, как известно, можно присваивать значение более узкого численного типа переменной более широкого типа в соответствии с правилом: INTEGER C LONGINT C REAL C LONGREAL Запрет на присваивание в обратную сторону аргументируется потерей информации. На практике же это приводит к тому, что 32-разрядное целое мржно присвоить 4-байтной вещественной переменной, а такое присваивание идёт с потерей точности. Также потеря информации происходит при присваивании записи значения её расширения. Решены ли эти аопросы в компонентном паскале? С уважением, GH. |
Автор: | Борис Рюмшин [ Четверг, 06 Март, 2008 18:30 ] |
Заголовок сообщения: | Re: Потери информации при присваивании |
В КП REAL то же, что в Обероне LONGREAL - (REAL 64 bit IEEE). Хотя в сообщении записано всё тоже правило: REAL >= SHORTREAL >= LONGINT >= INTEGER >= SHORTINT >= BYTE |
Автор: | Борис Рюмшин [ Четверг, 06 Март, 2008 18:34 ] |
Заголовок сообщения: | Re: Потери информации при присваивании |
Потеря информации действительно возможна, однако при преобразовании нет переполнения. |
Автор: | Valery Solovey [ Четверг, 06 Март, 2008 19:02 ] |
Заголовок сообщения: | Re: Потери информации при присваивании |
Не факт, что увеличение разрядности переменных для хранения вещественных значений (SHORTREAL) исключит потерю точности. Вполне возможно, что у REAL те же проблемы. |
Автор: | Евгений Темиргалеев [ Пятница, 07 Март, 2008 09:35 ] |
Заголовок сообщения: | Re: Потери информации при присваивании |
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; ... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |