str to float (rounded)

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Nader

    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

  • Diez B. Roggisch

    #2
    Re: str to float (rounded)

    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

    Comment

    • Nader

      #3
      Re: str to float (rounded)

      On Jun 10, 4:30 pm, "Diez B. Roggisch" <de...@nospam.w eb.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.79999999999 9997, -0.2399999999999 9999), (33.29999999999 9997,
      -2.71), (33.60000000000 0001,-2.4199999999999 999)]

      But I would have a float with 2 decimal numbers.


      Comment

      • Diez B. Roggisch

        #4
        Re: str to float (rounded)

        >
        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.79999999999 9997, -0.2399999999999 9999), (33.29999999999 9997,
        -2.71), (33.60000000000 0001,-2.4199999999999 999)]
        >
        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.4199999999999 999999999999
        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 "Alternativ e to decimal type"


        Diez


        Comment

        Working...