Python: Remove division decimal
Question:
I have made a program that divides numbers and then returns the number, But the thing is that when it returns the number it has a decimal like this:
2.0
But I want it to give me:
2
so is there anyway I can do this?
Answers:
You can call int()
on the end result:
>>> int(2.0)
2
When a number as a decimal it is usually a float
in Python.
If you want to remove the decimal and keep it an integer (int
). You can call the int()
method on it like so…
>>> int(2.0)
2
However, int
rounds down so…
>>> int(2.9)
2
If you want to round to the nearest integer you can use round
:
>>> round(2.9)
3.0
>>> round(2.4)
2.0
And then call int()
on that:
>>> int(round(2.9))
3
>>> int(round(2.4))
2
>>> int(2.0)
You will get the answer as 2
You could probably do like below
# p and q are the numbers to be divided
if p//q==p/q:
print(p//q)
else:
print(p/q)
def division(a, b):
return a / b if a % b else a // b
There is a math function modf()
that will break this up as well.
import math
print("math.modf(3.14159) : ", math.modf(3.14159))
will output a tuple:
math.modf(3.14159) : (0.14159, 3.0)
This is useful if you want to keep both the whole part and decimal for reference like:
decimal, whole = math.modf(3.14159)
if val % 1 == 0:
val = int(val)
else:
val = float(val)
This worked for me.
How it works: if the remainder of the quotient of val and 1 is 0, val has to be an integer and can, therefore, be declared to be int without having to worry about losing decimal numbers.
Compare these two situations:
A:
val = 12.00
if val % 1 == 0:
val = int(val)
else:
val = float(val)
print(val)
In this scenario, the output is 12, because 12.00 divided by 1 has the remainder of 0. With this information we know, that val doesn’t have any decimals and we can declare val to be int.
B:
val = 13.58
if val % 1 == 0:
val = int(val)
else:
val = float(val)
print(val)
This time the output is 13.58, because when val is divided by 1 there is a remainder (0.58) and therefore val is declared to be a float.
By just declaring the number to be an int (without testing the remainder) decimal numbers will be cut off.
This way there are no zeros in the end and no other than the zeros will be ignored.
There are 4 ways to remove decimal places in Python,
- Using the int() function
- Using the trunc() function in math library
- Using string formatting and methods
- Using
%d
placeholder
- Using split() function
- Using the round() function
1. Using the int() function
int() is a Python Built-in Type function.
>>> number = 2.0
>>> number
2.0
>>> number = int(2.0)
2
>>> type(number)
<class 'int'>
2. Using the trunc() function in math library
trunc() function in math library.
>>> import math
>>>
>>> number = 2.0
>>> number
2.0
>>> number = math.trunc(2.0)
2
>>> type(number)
<class 'int'>
3. Using string formatting and methods
Please note:- Everything returned in this section is of type str
.
1. Using %d placeholder
Format the string with the %d
placeholder
>>> number = 2.0
>>> number
2.0
>>> number = '%d'%number
>>> number
'2'
>>> type(number)
<class 'str'>
2. Using split() function
split() function is a string method.
>>> number = 2.0
>>> number
2.0
>>> number=str(number).split('.')[0]
>>> number
'2'
>>> type(number)
<class 'str'>
4. Using the round() function
round() is a Built-in Function.
>>> number = 2.0
>>> number
2.0
>>> number = round(number)
>>> number
2
>>> type(number)
<class 'int'>
References:-
I have made a program that divides numbers and then returns the number, But the thing is that when it returns the number it has a decimal like this:
2.0
But I want it to give me:
2
so is there anyway I can do this?
You can call int()
on the end result:
>>> int(2.0)
2
When a number as a decimal it is usually a float
in Python.
If you want to remove the decimal and keep it an integer (int
). You can call the int()
method on it like so…
>>> int(2.0)
2
However, int
rounds down so…
>>> int(2.9)
2
If you want to round to the nearest integer you can use round
:
>>> round(2.9)
3.0
>>> round(2.4)
2.0
And then call int()
on that:
>>> int(round(2.9))
3
>>> int(round(2.4))
2
>>> int(2.0)
You will get the answer as 2
You could probably do like below
# p and q are the numbers to be divided
if p//q==p/q:
print(p//q)
else:
print(p/q)
def division(a, b):
return a / b if a % b else a // b
There is a math function modf()
that will break this up as well.
import math
print("math.modf(3.14159) : ", math.modf(3.14159))
will output a tuple:
math.modf(3.14159) : (0.14159, 3.0)
This is useful if you want to keep both the whole part and decimal for reference like:
decimal, whole = math.modf(3.14159)
if val % 1 == 0:
val = int(val)
else:
val = float(val)
This worked for me.
How it works: if the remainder of the quotient of val and 1 is 0, val has to be an integer and can, therefore, be declared to be int without having to worry about losing decimal numbers.
Compare these two situations:
A:
val = 12.00
if val % 1 == 0:
val = int(val)
else:
val = float(val)
print(val)
In this scenario, the output is 12, because 12.00 divided by 1 has the remainder of 0. With this information we know, that val doesn’t have any decimals and we can declare val to be int.
B:
val = 13.58
if val % 1 == 0:
val = int(val)
else:
val = float(val)
print(val)
This time the output is 13.58, because when val is divided by 1 there is a remainder (0.58) and therefore val is declared to be a float.
By just declaring the number to be an int (without testing the remainder) decimal numbers will be cut off.
This way there are no zeros in the end and no other than the zeros will be ignored.
There are 4 ways to remove decimal places in Python,
- Using the int() function
- Using the trunc() function in math library
- Using string formatting and methods
- Using
%d
placeholder - Using split() function
- Using
- Using the round() function
1. Using the int() function
int() is a Python Built-in Type function.
>>> number = 2.0
>>> number
2.0
>>> number = int(2.0)
2
>>> type(number)
<class 'int'>
2. Using the trunc() function in math library
trunc() function in math library.
>>> import math
>>>
>>> number = 2.0
>>> number
2.0
>>> number = math.trunc(2.0)
2
>>> type(number)
<class 'int'>
3. Using string formatting and methods
Please note:- Everything returned in this section is of type str
.
1. Using %d placeholder
Format the string with the %d
placeholder
>>> number = 2.0
>>> number
2.0
>>> number = '%d'%number
>>> number
'2'
>>> type(number)
<class 'str'>
2. Using split() function
split() function is a string method.
>>> number = 2.0
>>> number
2.0
>>> number=str(number).split('.')[0]
>>> number
'2'
>>> type(number)
<class 'str'>
4. Using the round() function
round() is a Built-in Function.
>>> number = 2.0
>>> number
2.0
>>> number = round(number)
>>> number
2
>>> type(number)
<class 'int'>
References:-