Velocity Reviews > how to convert an integer to a float?

# how to convert an integer to a float?

yinglcs@gmail.com
Guest
Posts: n/a

 02-28-2007
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

jeff
Guest
Posts: n/a

 02-28-2007
On Feb 27, 7:05 pm, "(E-Mail Removed)" <(E-Mail Removed)> 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?
>
> 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

Farshid Lashkari
Guest
Posts: n/a

 02-28-2007
http://www.velocityreviews.com/forums/(E-Mail Removed) 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

Farshid Lashkari
Guest
Posts: n/a

 02-28-2007
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

Matimus
Guest
Posts: n/a

 02-28-2007
On Feb 27, 4:05 pm, "(E-Mail Removed)" <(E-Mail Removed)> 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?
>
> 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

bearophileHUGS@lycos.com
Guest
Posts: n/a

 02-28-2007
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

Bjoern Schliessmann
Guest
Posts: n/a

 02-28-2007
(E-Mail Removed) 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

Grant Edwards
Guest
Posts: n/a

 02-28-2007
On 2007-02-28, jeff <(E-Mail Removed)> wrote:
> On Feb 27, 7:05 pm, "(E-Mail Removed)" <(E-Mail Removed)> 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?
>>
>> 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

Ben Finney
Guest
Posts: n/a

 02-28-2007
responding to, and trim any irrelevant lines from the original.

Subscriber123 <(E-Mail Removed)> writes:

> 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

Dennis Lee Bieber
Guest
Posts: n/a

 02-28-2007
On 27 Feb 2007 16:05:40 -0800, "(E-Mail Removed)" <(E-Mail Removed)>
declaimed the following in comp.lang.python:

> 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?
>

Being cynical: the same way you converted the arguments to
integer... use float()

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

But WHY are you converting to integer in the first place.

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

Note that, by converting to integer, you run the risk of a division
by zero

n1 = 0.2
n2 = 0.3

i1 <- 0
i2 <- 0

min(0, 0)
--
Wulfraed Dennis Lee Bieber KD6MOG
(E-Mail Removed) (E-Mail Removed)
HTTP://wlfraed.home.netcom.com/
(Bestiaria Support Staff: (E-Mail Removed))
HTTP://www.bestiaria.com/