Рассмотрим ещё один тип чисел-непосредственных значений в 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 значащих десятичных цифр.
Воспользовавшись командными строками под журналом, создайте и выполните команды для вывода десятичных дробей всех разновидностей.