Floating-point numbers, also known as real numbers, are used when evaluating expressions that require fractional precision.

A number that contains a fractional part is known as a real number, for example, 3.2, 0.1149, -1.19, etc.

Java supports the floating-point number format. Java uses the IEEE 754 Floating-Point standard to store real numbers.

There are two kinds of floating-point types, float and double, which represent single- and double-precision numbers, respectively.

Their width and ranges are shown here:

Name | Width in Bits | Approximate Range |
---|---|---|

double | 64 | 4.9e-324 to 1.8e+308 |

float | 32 | 1.4e-045 to 3.4e+038 |

The float data type uses 32 bits to store a floating-point number.

A floating-point number is also known as a single-precision floating-point number.
It can represent a real number as small as 1.4 x 10^{-45} and as big as 3.4 x 10^{38} in magnitude.

The range includes only the magnitude. It could be positive or negative.

All real numbers that end with f or F are called float literals. A float literal can be expressed in the following two formats:

- Decimal number format
- Scientific notation

Examples of float literals in decimal number format are as follows:

float f1 = 1F; float f2 = 2.F; float f3 = 3.0F; float f4 = 4.51F; float f5 = 5.0F; float f6 = 56.78f;

In Java, real numbers can be represented as float literals using scientific notation.

In scientific notation, the number 32.5 x 10^{-1} is written as 32.5E-1.
As a float literal, it can be written as 32.5E-1F or 32.5E-1f.

All of the following float literals denote the same real number 42.5:

4.25F 42.5E-1F 0.425E+1F 0.425E1F 0.0425E2F 0.0425e2F 4.25E0F

The float data type defines two zeros: +0.0F (or 0.0F) and -0.0F. Both +0.0F and -0.0F are considered equal.

The float data type defines two infinities: positive infinity and negative infinity.

Results of some of the operations on float are not defined. For example, dividing 0.0F by 0.0F is indeterminate.

Indeterminate results are represented by a special value of the float data type called NaN (Not-a-Number).

Java has a `Float`

class, which defines three constants that represent positive infinity,
negative infinity, and NaN of the float data type.

The following table lists these three float constants and their meanings.

Constants | Meaning |
---|---|

Float.POSITIVE_INFINITY | Positive infinity of type float |

Float.NEGATIVE_INFINITY | Negative infinity of type float |

Float.NaN | Not a Number of type float |

Float.MAX_VALUE | The largest positive value that can be represented in a float variable. This is equal to
3.4 x 10^{38} (approx.). |

Float.MIN_VALUE | The smallest positive value greater than zero that can be represented in a float
variable. This is equal to 1.4 x 10^{-45}. |

The value of all integral types (int, long, byte, short, and char) can be assigned to a variable of the float data type without using an explicit cast.

A float value must be cast before it is assigned to a variable of any integral data type int, long, byte, short, or char.

The assignment of int and long to float may result in loss of precision.