Floating point numbers are numbers with a decimal point. There
are different sizes of floating point numbers in C. The float
type can contain large floating point numbers with a small degree of
precision, but the double-precision double type can hold even
larger numbers with a higher degree of precision. (Precision is
simply the number of decimal places to which a number can be computed
with accuracy. If a number can be computed to five decimal places, it is
said to have five significant digits.)
All floating point mathematical functions built into C require
double or long float arguments (long float
variables are generally the same as double variables on GNU
systems), so it is common to use float only for storage of small
floating point numbers, and to use double everywhere else.
Here are the floating point variable types available in C:
float:
A single-precision floating point number, with at least 6 significant
decimal digits.
double:
A double-precision floating point number. Usually the same as long
float on GNU systems. Has at least 10 significant decimal digits.
long double:
Usually the same as double on GNU systems, but may be a 128-bit
number in some cases.
On a typical 32-bit GNU system, the sizes of the different floating
point types are as follows.
Type
Bits
Possible values (approx.)
float
32
1e-38 to 1e+38
double
64
2e-308 to 1e+308
long double
64
2e-308 to 1e+308
You may find the figures in the right-hand column confusing. They use a
form of shorthand for large numbers. For example, the number 5e2 means
5 * 10^2, or 500. 5e-2 means 5 * 10^-2 (5/100, or
1/20). You can see, therefore, that the float,
double, and long double types can contain some very large
and very small numbers indeed. (When you work with large and small
numbers in C, you will use this notation in your code.)