In computing, a normal number is a non-zero number in a floating-point representation which is within the balanced range supported by a given floating-point format: it is a floating point number that can be represented without leading zeros in its significand.
The magnitude of the smallest normal number in a format is given by:
where b is the base (radix) of the format (like common values 2 or 10, for binary and decimal number systems), and depends on the size and layout of the format.
Similarly, the magnitude of the largest normal number in a format is given by
where p is the precision of the format in digits and is related to as:
In the IEEE 754 binary and decimal formats, b, p, , and have the following values:
+Smallest and Largest Normal Numbers for common numerical Formats | Format | b | p | Emin | Emax | Smallest Normal Number | Largest Normal Number | |||
---|---|---|---|---|---|---|---|---|---|---|
binary16 | 2 | 11 | −14 | 15 | 2-14\equiv0.00006103515625 | 215 ⋅ \left(2-21-11\right)\equiv65504 | ||||
binary32 | 2 | 24 | −126 | 127 | 2-126\equiv
| 2127 ⋅ \left(2-21-24\right) | ||||
binary64 | 2 | 53 | −1022 | 1023 | 2-1022\equiv
| 21023 ⋅ \left(2-21-53\right) | ||||
binary128 | 2 | 113 | −16382 | 16383 | 2-16382\equiv
| 216383 ⋅ \left(2-21-113\right) | ||||
decimal32 | 10 | 7 | −95 | 96 | 10-95\equiv
| 1096 ⋅ \left(10-101-7\right)\equiv9.999999 ⋅ 1096 | ||||
decimal64 | 10 | 16 | −383 | 384 | 10-383\equiv
| 10384 ⋅ \left(10-101-16\right) | ||||
decimal128 | 10 | 34 | −6143 | 6144 | 10-6143\equiv
| 106144 ⋅ \left(10-101-34\right) |
For example, in the smallest decimal format in the table (decimal32), the range of positive normal numbers is 10-95 through 9.999999 × 1096.
Non-zero numbers smaller in magnitude than the smallest normal number are called subnormal numbers (or denormal numbers).
Zero is considered neither normal nor subnormal.