468,321 Members | 1,849 Online

# how to convert an integer to a float?

Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2,
i1)' always return 0, can you please tell me how can i convert it from
an integer to float?
def compareValue(n1, n2):
i1 = int(n1)
i2 = int(n2)

dx = abs(i2 - i1)/min(i2, i1)
print dx
return dx < 0.05

Feb 28 '07 #1
10 107008
On Feb 27, 7:05 pm, "ying...@gmail.com" <ying...@gmail.comwrote:
Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2,
i1)' always return 0, can you please tell me how can i convert it from
an integer to float?

def compareValue(n1, n2):
i1 = int(n1)
i2 = int(n2)

dx = abs(i2 - i1)/min(i2, i1)
print dx
return dx < 0.05
x = x + 0.0

Feb 28 '07 #2
yi*****@gmail.com wrote:
Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2,
i1)' always return 0, can you please tell me how can i convert it from
an integer to float?
When two integers are involved in a division, the result will also be a
division. If one of the operands is a float, then the result will be a
float instead. So try casting one of the values to a float before
performing the division:

dx = float(abs(i2 - i1))/min(i2, i1)

-Farshid
Feb 28 '07 #3
Farshid Lashkari wrote:
When two integers are involved in a division, the result will also be a
division.
My bad, I meant the result will also be an *integer*

-Farshid
Feb 28 '07 #4
yinglcs, you can use float() or the new division:
>>1 / 2
0
>>1 / float(2)
0.5
>>from __future__ import division
1 / 2
0.5

Bye,
bearophile

Feb 28 '07 #5
On Feb 27, 4:05 pm, "ying...@gmail.com" <ying...@gmail.comwrote:
Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2,
i1)' always return 0, can you please tell me how can i convert it from
an integer to float?

def compareValue(n1, n2):
i1 = int(n1)
i2 = int(n2)

dx = abs(i2 - i1)/min(i2, i1)
print dx
return dx < 0.05
dx = float(abs(i2 -i1))/min(i2, i1)

Or you could just put "from __future__ import division" at the top of

see http://www.python.org/dev/peps/pep-0238/ for details.

-Matt

Feb 28 '07 #6
yi*****@gmail.com wrote:
def compareValue(n1, n2):
i1 = int(n1)
i2 = int(n2)

dx = abs(i2 - i1)/min(i2, i1)
print dx
return dx < 0.05
You could also prepend

from __future__ import division

Regards,
Björn

--
BOFH excuse #237:

Plate voltage too low on demodulator tube

Feb 28 '07 #7
On 2007-02-28, jeff <je****************@gmail.comwrote:
On Feb 27, 7:05 pm, "ying...@gmail.com" <ying...@gmail.comwrote:
>Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2,
i1)' always return 0, can you please tell me how can i convert it from
an integer to float?

def compareValue(n1, n2):
i1 = int(n1)
i2 = int(n2)

dx = abs(i2 - i1)/min(i2, i1)
print dx
return dx < 0.05

x = x + 0.0
How, um, perlesque.

I rather think that this is a bit more pythonic:

x = float(x)

--
Grant Edwards grante Yow! I'm a fuschia bowling
at ball somewhere in Brittany
visi.com
Feb 28 '07 #8
responding to, and trim any irrelevant lines from the original.

Subscriber123 <su***********@gmail.comwrites:
How did the new division ever get approved?!
By being introduced as a PEP, which is now numbered PEP 238.

<URL:http://www.python.org/dev/peps/pep-0238/>
That's not pythonic! What if you then need to divide two integers
and find an element in a list or dict?
Then your code is dependent on ambiguous behaviour which has changed

As described in the above document, the '//' operator will
unambiguously request floor division, even in older versions of
Python.
I know that at the moment it is not implemented unless imported from
__future__, but I expect that it eventually might be.
That would be a problem with backwards compatibility.
The older Python versions aren't going away. Anyone who wants their
old code to work with new versions of Python has a responsibility to
see what parts of their code need to be updated.

--
\ "My roommate got a pet elephant. Then it got lost. It's in the |
`\ apartment somewhere." -- Steven Wright |
_o__) |
Ben Finney

Feb 28 '07 #9
<yi*****@gmail.comwrote in message
Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2,
i1)' always return 0, can you please tell me how can i convert it from
an integer to float?
I don't think that's what you really want to do.

What you really want is for dx to be a float rather than being truncated to
an integer. Division is going to behave that way in the future, so if you
want it to behave that way now, you can write

from __future__ import division

at the beginning of your program.

If for some reason you don't want to rely on using a version of Python that

dx = float(abs(i2 - i1))/min(i2, i1)

as an alternative.
Mar 5 '07 #10
On 2007-03-05, Andrew Koenig <ar*@acm.orgwrote:
><yi*****@gmail.comwrote in message
>Hi, I have the following functions, but ' dx = abs(i2 - i1)/min(i2,
i1)' always return 0, can you please tell me how can i convert it from
an integer to float?

I don't think that's what you really want to do.

What you really want is for dx to be a float rather than being truncated to
an integer. Division is going to behave that way in the future, so if you
want it to behave that way now, you can write

from __future__ import division

at the beginning of your program.

If for some reason you don't want to rely on using a version of Python that

dx = float(abs(i2 - i1))/min(i2, i1)
I prefer to multiply by 1.0 That has the advantage it continues to work
if your numbers happen to be complex.

--
Antoon Pardon
Mar 8 '07 #11

### This discussion thread is closed

Replies have been disabled for this discussion.