If you execute the statement a = 3.0 in Python, you create a floating-point number (Python type: float). These numbers form a finite subset of rational numbers, ℚ.
Alternatively, the constant could have been given in exponent notation as a = 30.0e-1 or simply a = 30.e-1. The symbol e separates the exponent from the mantissa, and the expression reads in mathematical notation as . The name floating-point number refers to the internal representation of these numbers and reflects the floating position of the decimal point when considering numbers over a wide range.
Applying elementary mathematical operations, such as +, -, *, and /, to two floating-point numbers, or to an integer and a floating-point number, returns a floating-point number.
Operations between floating-point numbers rarely return the exact result expected from rational number operations:
0.4 - 0.3 # returns 0.10000000000000003
This fact matters when comparing floating-point numbers:
0.4 - 0.3 == 0.1 # returns False
The reason for this becomes apparent when looking at the internal representation of floating-point numbers; see also Section 15.2.6, Float comparisons.