The REAL data type provides 4 bytes of storage for numbers using IEEE floating-point notation.

REAL

*java.lang.Float*

REAL

REAL value ranges:

- Largest negative REAL value: -3.4028235E+38
- Largest positive REAL value: 3.4028235E+38
- Smallest negative normalized REAL value: -1.17549435E-38
- Smallest positive normalized REAL value: 1.17549435E-38
- Smallest negative denormalized REAL value: -1.4E-45
- Smallest positive denormalized REAL value: 1.4E-45

These limits are the same as the `java.lang.Float` Java
type limits.

An exception is thrown when any double value is calculated
or entered that is outside of these value ranges. Arithmetic operations **do
not** round their resulting values to zero. If the values are too small,
you will receive an exception. The arithmetic operations take place with double
arithmetic in order to detect underflows.

Derby normalizes -0.0 to positive 0.0.

Derby throws an exception
if an operation calculates or tries to store a value of NaN, positive infinity,
or negative infinity, as defined by the IEEE 754 Standard for Binary
Floating-Point Arithmetic and as represented with named constants in the
Java programming language (for example, `Double.NaN`).

Numeric floating-point constants
are limited to a length of 30 characters.

-- this example will fail because the constant is too long:values 01234567890123456789012345678901e0;

When mixed with other data types in expressions, the resulting data type follows the rules shown in Numeric type promotion in expressions.

See also Storing values of one numeric data type in columns of another numeric data type.

Constants always map to DOUBLE PRECISION; use a CAST to convert a constant to a REAL.