Вещественные типы с плавающей точкой, тип Float
Вещественные типы с плавающей точкой имеют неограниченный диапазон значений и точность, определяемую количеством десятичных цифр после запятой. Представление чисел с плавающей точкой имеет фиксированную относительную погрешность.
Пакет Standard предоставляет предопределенный вещественный тип с плавающей точкой Float, который обеспечивает точность в шесть десятичных цифр после запятой:
type Float is digits 6 range -16#0.FFFF_FF#E+32 .. 16#0.FFFF_FF#E+32; -- -3.40282E+38 .. 3.40282E+38 |
В пакете Standard компилятора GNAT, для 32-битных систем Linux и Windows, дополнительно представлены еще несколько вещественных типов с плавающей точкой (фактические значения констант для различных платформ отличаются):
type Short_Float is digits 6 range -16#0.FFFF_FF#E+32 .. 16#0.FFFF_FF#E+32; -- -3.40282E+38 .. 3.40282E+38
type Long_Float is digits 15 range -16#0.FFFF_FFFF_FFFF_F8#E+256 .. 16#0.FFFF_FFFF_FFFF_F8#E+256; -- -1.79769313486232E+308 .. 1.79769313486232E+308 type Long_Long_Float is digits 18 range -16#0.FFFF_FFFF_FFFF_FFFF#E+4096 .. 16#0.FFFF_FFFF_FFFF_FFFF#E+4096; -- -1.18973149535723177E+4932 .. 1.18973149535723177E+4932 |
Ниже следуют примеры описаний вещественных величин с плавающей точкой.
X : Float; A, B, C : Float; Pi : constant Float := 3.14_2; Avogadro : constant := 6.027E23; -- тип Universal_Float
subtype Temperatures is Float range 0.0..100.0; type Result is new Float range 0.0..20_000.0; type Velocity is new Float; type Height is new Float; -- нельзя случайно смешивать Velocity и Height -- без явного преобразования типов. type Time is digits 6 range 0.0..10_000.0; -- в этом диапазоне требуемая точность - шесть десятичных цифр -- после точки type Degrees is digits 2 range -20.00..100.00; -- требуемая точность - две десятичных цифры после точки |
Следующие знаки операций предопределены для каждого вещественного типа с плавающей точкой.
+, -, *, / ** возведение в степень (только целые значения степени) abs абсолютное значение |