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?

Asked By: Dan Alexander

||

Answers:

You can call int() on the end result:

>>> int(2.0)
2
Answered By: TerryA

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
Answered By: Inbar Rose
>>> int(2.0)

You will get the answer as 2

Answered By: Joshwin Vadakkadam

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)
Answered By: Himanshu
def division(a, b):
    return a / b if a % b else a // b
Answered By: delloff

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)

Answered By: raceee
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.

Answered By: Jerzy

There are 4 ways to remove decimal places in Python,

  1. Using the int() function
  2. Using the trunc() function in math library
  3. Using string formatting and methods
    1. Using %d placeholder
    2. Using split() function
  4. 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:-

Answered By: Kushan Gunasekera
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.