Node:Floating point variables, Previous:The char type, Up:Integer variables

#### Floating point variables

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.)