Why does Python return 0 for simple division calculation?

Why does this simple calculation return 0

>>> 25/100*50  
0

while this actually calculates correctly?

>>> .25*50
12.5

>>> 10/2*2  
10

What is wrong with the first example?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

In Python 2, 25/100 is zero when performing an integer divison. since the result is less than 1.

You can “fix” this by adding from __future__ import division to your script. This will always perform a float division when using the / operator and use // for integer division.

Another option would be making at least one of the operands a float, e.g. 25.0/100.

In Python 3, 25/100 is always 0.25.

Method 2

This is a problem of integer truncation (i.e., any fractional parts of a number are discarded). So:

25 / 100 gives 0

However, as long as at least one of the operands in the division is a float, you’ll get a float result:

 25 / 100.0 or 25.0 / 100  or 25.0 / 100.0 all give 0.25

Method 3

25/100 is an integer calculation which rounds (by truncation) to 0.

Method 4

I solved this problem just by doing this trick.

(25 * 1.0) / 100 * 50

So, (1.0) makes sure that the numerator be float type

Method 5

Python 2 returns zero for integer division if result is less than 1.

Solution is to convert one of the integers to float e.g.

float(25)/100*50

Method 6

  • In Python 2: 25/100 is an integer division by default
  • In Python 3: 25/100 is always 0.25.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x