OberonCore
https://forum.oberoncore.ru/

REALly? Я запутался в ДЕЙСТВИТЕЛЬНОсти
https://forum.oberoncore.ru/viewtopic.php?f=29&t=6706
Страница 1 из 1

Автор:  adimetrius [ Вторник, 05 Январь, 2021 15:20 ]
Заголовок сообщения:  REALly? Я запутался в ДЕЙСТВИТЕЛЬНОсти

Коллеги,

Код:
   PROCEDURE Really*;
      VAR s: SHORTREAL; r: REAL;
   BEGIN s := -0.4523987; r := -0.4523987; Log.Real(s); Log.Char(' '); Log.Real(r)
   END Really;
(* резульат:  -0.4523986876010895  -0.4523987 *)


Как я понял, -0.4523987 не может быть выражено в 32-разрядном формате.
В этом случае я бы ожидал от компилятора сообщения об ошибке. Подобно тому, что если i: INTEGER, то i := MAX(INTEGER) + 1 - это ошибка; если sh: SHORTCHAR, то sh := "Я" - тоже ошибка.

Я почти не имею опыта работы с действительными числами. Возможно, я не прав?

В Сообщении про действительные литералы сказано:
Language Report, 3. Vocabulary and representation писал(а):
A real number is always of type REAL.

Автор:  Trurl [ Вторник, 05 Январь, 2021 15:39 ]
Заголовок сообщения:  Re: REALly? Я запутался в ДЕЙСТВИТЕЛЬНОсти

Не надо тут никаких сообщений.

Автор:  Иван Денисов [ Вторник, 05 Январь, 2021 17:30 ]
Заголовок сообщения:  Re: REALly? Я запутался в ДЕЙСТВИТЕЛЬНОсти

Ну да, тут понятно, что все эти десятичные константы округляются в двоичном формате. Это обычно расчётчики точно понимают. А то можно будет указывать константы только в двоичном виде :)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/