float problem

I

Indigo Moon Man

for the formula J = I / (12 * 100) where I is low (like about 8 to 15) I
get 0. But when I do it with a calculator it's actually .008333 for example
if I were 10. Is there a way I can get python to recognize the .008333
instead of it just giving me 0?

TIA for your help!
 
G

Greg Krohn

Indigo Moon Man said:
for the formula J = I / (12 * 100) where I is low (like about 8 to 15) I
get 0. But when I do it with a calculator it's actually .008333 for example
if I were 10. Is there a way I can get python to recognize the .008333
instead of it just giving me 0?

TIA for your help!

Normally division with integers gives an integer result losing everything
after the decimal. Couple of things you can do about that, but basically you
have to convert your denominator or divisor to a float before you divide:

J = I / float(12 * 100)

or

J = float(I) / (12 * 100)

Alternativly you could use 12.0 instead of 12 (or 100.0 instead of 100 for
that matter)

J = I / (12.0 * 100)

or

J = I / (12 * 100.0)

And last, but not least, you can import from future to make all division
"lossless":

from __future__ import division
J = I / (12 * 100)


I personally prefer the first one, but they will all work fine.


greg
 
G

Gary Herron

for the formula J = I / (12 * 100) where I is low (like about 8 to 15) I
get 0. But when I do it with a calculator it's actually .008333 for
example if I were 10. Is there a way I can get python to recognize the
.008333 instead of it just giving me 0?

You're getting bit by the difference between integer and float
division.

In versions of python prior to 2.3 (and in 2.3 under normal
circumstances), division of two integers returns an integer and
division of two floats (or a float and an integer )returns a float:

So one solution would be to make sure the numbers you are dividing are
floats when you want a float in return.

In future version of Python, there will be two dividion operators:
/ will always return a float
// will always return an int

In Python 2.3, you can experiment with the future behavior by starting
your program with:

So depending on your version of Python, this may be another solution.

Gary Herron
 
I

Indigo Moon Man

Gary Herron said:
You're getting bit by the difference between integer and float
division.

In versions of python prior to 2.3 (and in 2.3 under normal
circumstances), division of two integers returns an integer and
division of two floats (or a float and an integer )returns a float:
Great! Thank you very much!
 
I

Indigo Moon Man

Greg Krohn said:
Normally division with integers gives an integer result losing everything
after the decimal. Couple of things you can do about that, but basically
you have to convert your denominator or divisor to a float before you
divide:
That's great! Thank you very much for your help!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top