Рассмотрим ещё один тип чисел-непосредственных значений в Oberon — десятичные дроби (числа с плавающей точкой). Такие числа всегда содержат точку, отделяющую целую часть от дробной.

Для вывода дробей можно использовать процедуру Out.Real. Аналогично Out.Int процедура Out.Real принимает в качестве второго параметра минимальное количество выводимых литер для возможности текстового выравнивания. Out.Real всегда выводит дробь в нормализованной экспоненциальной форме, которая близка научной нотации.

 

Дроби можно записывать в экспоненциальной форме. К простой записи дроби нужно добавить E (exponent), а за ней целое число — показатель степени 10. Например, 1300000.0 равно 1.3×106 и записывается как 1.3E6 . Степень может быть и отрицательной, например, 0.0000013 можно записать как 1.3E-6 . Для положительной степени знак + после E необязателен, но тоже возможен.

После разделяющей точки допустимо опускать незначащий 0 для краткости, хотя из эстетических соображений часто его оставляют (2.0, а не 2.)

В Oberon целые числа и дроби различаются даже тогда, когда их фактические значения совпадают. То есть 2.0 — это не то же самое, что и 2. Это продиктовано самой природой этих типов чисел. В естественной речи они тоже различаются, но чаще неявно и незаметно для самих пользователей, что может приводить к недоразумениям. Ключевая особенность — это подразумеваемая неточность чисел с плавающей точкой. Например, 2-е килограммовые гири — это всегда ровно 2-е гири. А совокупная их масса — 2-а килограмма — это всегда приблизительное значение, никогда фактически не равное воображаемым 2-м килограммам. Физическая неточность действительных чисел в компьютерах усугубляется вычислительной неточностью, в том числе обусловленной разницей между человеческим представлением (десятичным) и машинным (двоичным).

Десятичные дроби вмещают около 16 значащих десятичных цифр.

Воспользовавшись командными строками под журналом, создайте и выполните команды для вывода десятичных дробей всех разновидностей.