# Python Numbers and Conversion

In this section, you will learn number data type in Python programming and the mathematical operations that you can perform on these numbers. Further, you will learn how to convert from one data type to another.

## Number Data Type:

The number data type in Python include:

1. Integers
2. Floating point numbers
3. Complex numbers

Integer numbers do not have any fractional/decimal part.

Floating point numbers contain a decimal part.

Complex numbers have a real part and an imaginary part. Complex numbers are in the form `x + yj`, where `x` is the real part and `yj` is the imaginary part.

The function `type()` is used to get the data type of a variable or more generally, an object. The function `isinstance()` is used to check if the variable belongs to a particular class or not.

``````x = 3
print("type of", x, "is", type(x))
x = 3.23
print("type of", x, "is", type(x))
x = 3+3j
print("is", x, "a complex number:", isinstance(x, complex))
``````

Result:

``````type of 3 is <class 'int'>
type of 3.23 is <class 'float'>
is (3+3j) a complex number: True
``````

Integer numbers can be of any length but the floating point numbers should only be up to 15 decimal places.

The integers could also be represented binary (base 2), hexadecimal (base 16) and octal (base 8) format. This can be done by using prefixes. Check the table below:

Number System Prefixes
Binary ‘0b’ or ‘0B’
Octal ‘0o’ or ‘0O’
Hexadecimal ‘0x’ or ‘0X’

Example:

``````>>> print(0b110)
6
>>> print(0xFA)
250
>>> print(0o12)
10
``````

## Number Type Conversion:

### Implicit Type Conversion

If you add one number of `float` type and one another number of `int` type, the result’s type will be `float`. Here `int` is converted to `float` implicitly.

``````>>> 2 + 3.0
5.0
``````

Here, 2 is an integer which is converted to float implicitly and you have 2.0.

This implicit type conversion is also called coercion.

### Explicit Type Conversion

You could also do explicit number data type conversion using functions like `int()`, `float()`, `str()`, etc.

``````>>> x = 8
>>> print("Value of x = ", int(x))
Value of x =  8
>>> print("Converted Value of x = ", float(x))
Converted Value of x = 8.0
``````

If you want to convert `float` value to `int` value then the decimal part will be truncated.

## Fractional Numbers:

A module named `fractions` is used to perform operations which involves fractional number. `fractions` module could represent a fractional number as `numerator/denominator`

``````import fractions
print(fractions.Fraction(0.5))
``````
``````1/2
``````

The `Fraction` function of the `fractions` module will convert the decimal into fractions and then you can perform mathematical operations on these fractions:

``````print(Fraction(0.5) + Fraction(1.5))
print(Fraction(0.5) * Fraction(1.5))
print(Fraction(0.5) / Fraction(1.5))
``````

Result:

``````2
3/4
1/3
``````