| 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/ | |