---
title: Python Floating Point Numbers
---
Some general information about floating point numbers and how they work in Python, can be found here.
Nearly all implementations of Python follow the IEEE 754 specification: Standard for Binary Floating-Point Arithmetic. More information found on the IEEE site.
Float objects can be created using using floating point literals:
    >>> 3.14
    3.14
    >>> 314\.    # Trailing zero(s) not required.
    314.0
    >>> .314    # Leading zero(s) not required.
    0.314
    >>> 3e0
    3.0
    >>> 3E0     # 'e' or 'E' can be used.
    3.0
    >>> 3e1     # Positive value after e moves the decimal to the right.
    30.0
    >>> 3e-1    # Negative value after e moves the decimal to the left.
    0.3
    >>> 3.14e+2 # '+' not required but can be used for exponent part.
    314.0
Numeric literals do not contain a sign, however creating negative float objects is possible by prefixing with a unary `-` (minus) operator with no space before the literal
    >>> -3.141592653589793
    -3.141592653589793
    >>> type(-3.141592653589793)
    
Likewise, positive float objects can be prefixed with a unary `+ (`plus) operator with no space before the literal. Usually `+` is omitted:
    >>> +3.141592653589793
    3.141592653589793
Note that leading and trailing zero(s) are valid for floating point literals
    >>> 0.0
    0.0
    >>> 00.00
    0.0
    >>> 00100.00100
    100.001
    >>> 001e0010      # Same as 1e10
    10000000000.0
The `float` constructor is another way to create `float` objects.
Creating `float` objects with floating point literals is preferred when possible:
    >>> a = 3.14         # Prefer floating point literal when possible.
    >>> type(a)
    
    >>> b = int(3.14)    # Works but unnecessary.
    >>> type(b)
    
However, the float constructor allows for creating float objects from other number types:
    >>> a = 4
    >>> type(a)
    
    >>> print(a)
    4
    >>> b = float(4)
    >>> type(b)
    
    >>> print(b)
    4.0
    >>> float(400000000000000000000000000000000)
    4e+32
    >>> float(.00000000000000000000000000000004)
    4e-32
    >>> float(True)
    1.0
    >>> float(False)
    0.0
The `float` constructor will also make `float` objects from strings that represent number literals:
    >>> float('1')
    1.0
    >>> float('.1')
    0.1
    >>> float('3.')
    3.0
    >>> float('1e-3')
    0.001
    >>> float('3.14')
    3.14
    >>> float('-.15e-2')
    -0.0015
The `float` constructor can also be used to make numeric representation of `NaN` (Not a Number), negative `infinity` and `infinity` (note strings for these are case insensitive):
    >>> float('nan')
    nan
    >>> float('inf')
    inf
    >>> float('-inf')
    -inf
    >>> float('infinity')
    inf
    >>> float('-infinity')
    -inf