Representing numbers with fractions
Not everything in the world is a whole number. For that, we have numbers with fractions or rational numbers. Rational numbers, represented as p/q where p is the numerator and q is the denominator, are most naturally used to measure things.
A rational number is represented on the computer with the following form:
significand x baseexponent
Here, both the significand and the exponent are signed integers, and the base depends upon the floating-point implementation. The size of each depends on the number of bytes for a given rational number type. There are no unsigned components. This provides a very large range of numbers, from positive to negative, as well as very small fractional values:
Typically, when real numbers are used, either very precise values are desired or the calculations tend to have incredibly large ranges.
Historical Note
Before C23, the floating-point library was implemented with a base 2...