Los tipos reales se dividen en reales en coma flotante y reales en coma fija; los reales en coma fija pueden a su vez ser ordinarios o decimales. En todos los casos representan aproximaciones de los números reales matemáticos, con un límite de error relativo en el caso de coma flotante y absoluto en el caso de coma fija. Está predefinido el tipo Float que designa números reales en coma flotante.
Para los tipos en coma fija se debe especificar el límite absoluto de error (delta), que debe ser potencia de 10 en el caso de los decimales (para los que también se debe especificar el número total de dígitos a representar), y si se desea un rango real.
La entrada y salida de valores de un tipo real en coma flotante se realiza instanciando el paquete Ada.Text_IO.Float_IO. La entrada/salida de valores de un tipo real en coma fija ordinario se realiza instanciando el paquete Ada.Text_IO.Fixed_IO. La entrada/salida de valores de un tipo real en coma fija decimal se realiza instanciando el paquete Ada.Text_IO.Decimal_IO. Se puede realizar entrada/salida de valores del tipo predefinido Float usando el paquete no genérico Ada.Float_Text_IO.
A los tipos enteros les son aplicables los atributos generales de los tipos escalares, en particular los atributos de los tipos reales.
real_full_type_declaration ::= type defining_identifier is real_type_definition;
real_type_definition ::= floating_point_definition | fixed_point_definition
floating_point_definition ::= digits static_expression [real_range_specification] real_range_specification ::= range static_simple_expression .. static_simple_expression fixed_point_definition ::= ordinary_fixed_point_definition | decimal_fixed_point_definition ordinary_fixed_point_definition ::= delta static_expression real_range_specification decimal_fixed_point_definition ::= delta static_expression digits static_expression [real_range_specification] digits_constraint ::= digits static_expression [range_constraint]
-- Coma flotante type Real is digits 8; type Real_Corto is digits 5 range -1.0 .. 1.0;
-- Coma fija type Real_Fijo is delta 0.125 range -100000.0 .. 100000.0; -- ordinaria type Tipo_Dec is delta 0.01 digits 6 range -1000.00..1000.00; -- decimal
Un_Real, Otro_Real : Float; Pi : constant Float := 3.141628; Un_Fijo : Real_Fijo; Un_Decimal : Tipo_Dec;
125.25 -- Valor 125.25 125.25E-1 -- Valor 12.525 125.25e+3 -- Valor 125250.0 2#1001.111# -- Valor 9.875, en base 2 8#7123.6# -- Valor 3667.75, en base 8 16#7f2a.6#E-2 -- Valor 127.16553, en base 16