468,316 Members | 1,477 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,316 developers. It's quick & easy.

str to float (rounded)

Hello,

I have a list of tuple with strin elements. These elements are number,
but they are save as string. Now I will change the string to number
which will be rounded. An example will make it more clear.

t = [('35.757', '-0.239'), ('33.332', '-2.707'), ('33.640', '-2.423')]

And I will have the next list:

t = [(35.76, -2.24), (33.33, -2.71), (33.64, -2.42)]

The elements of tuple are not more as string.

Would somebody tell me how I can do that?

Regards,
Nader

Jun 27 '08 #1
3 2337
Nader wrote:
Hello,

I have a list of tuple with strin elements. These elements are number,
but they are save as string. Now I will change the string to number
which will be rounded. An example will make it more clear.

t = [('35.757', '-0.239'), ('33.332', '-2.707'), ('33.640', '-2.423')]

And I will have the next list:

t = [(35.76, -2.24), (33.33, -2.71), (33.64, -2.42)]

The elements of tuple are not more as string.

Would somebody tell me how I can do that?
use

float("123.45")

to convert a string to a float.

Of course you need to do that on all your elements above by e.g. a
list-comprehension.

Diez
Jun 27 '08 #2
On Jun 10, 4:30 pm, "Diez B. Roggisch" <de...@nospam.web.dewrote:
Nader wrote:
Hello,
I have a list of tuple with strin elements. These elements are number,
but they are save as string. Now I will change the string to number
which will be rounded. An example will make it more clear.
t = [('35.757', '-0.239'), ('33.332', '-2.707'), ('33.640', '-2.423')]
And I will have the next list:
t = [(35.76, -2.24), (33.33, -2.71), (33.64, -2.42)]
The elements of tuple are not more as string.
Would somebody tell me how I can do that?

use

float("123.45")

to convert a string to a float.

Of course you need to do that on all your elements above by e.g. a
list-comprehension.

Diez
If I do the next :

t1 = [(round(float(x),1), round(float(y),2)) for x, y in t]

I get the long float as :

[(35.799999999999997, -0.23999999999999999), (33.299999999999997,
-2.71), (33.600000000000001,-2.4199999999999999)]

But I would have a float with 2 decimal numbers.
Jun 27 '08 #3
>
If I do the next :

t1 = [(round(float(x),1), round(float(y),2)) for x, y in t]

I get the long float as :

[(35.799999999999997, -0.23999999999999999), (33.299999999999997,
-2.71), (33.600000000000001,-2.4199999999999999)]

But I would have a float with 2 decimal numbers.
There is no such thing as a float with only two decimal numbers. This has
been discussed on this ML a bazillion times - what you see above are
rounding errors due to the approximation of decimal values by binary
floating points.

You can *convert a float to a string* and specify a precision when printing:
>>print "%.2f" % 2.4199999999999999999999999
2.42

Or you can use the module decimal to work with numbers base 10 - which you
can also limit to certain precisions. See a recent thread on this ML,
google for "Alternative to decimal type"
Diez
Jun 27 '08 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Benny | last post: by
3 posts views Thread by V. Jenks | last post: by
60 posts views Thread by Erick-> | last post: by
116 posts views Thread by Dilip | last post: by
13 posts views Thread by mygolfcircle | last post: by
16 posts views Thread by Dom Fulton | last post: by
reply views Thread by NPC403 | last post: by
1 post views Thread by howard w | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.