floating point arithmetic

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

    floating point arithmetic

    Hi all,

    I understand that due to different arithmetic used in floating points
    they are just approximations. Hence, 180/100=1 in my python interpreter.
    How can I tackle this problem of inaccurate floating point numbers?
    thank you

    regards
    xtd
  • Mensanator

    #2
    Re: floating point arithmetic

    On Aug 26, 4:11 pm, fred8865 <xtd8...@gmail. comwrote:
    Hi all,
    >
    I understand that due to different arithmetic used in floating points
    they are just approximations. Hence, 180/100=1 in my python interpreter.
    How can I tackle this problem of inaccurate floating point numbers?
    Try actually using floating point numbers, not integers:
    >>180.0/100
    1.8

    or
    >>float(180)/100
    1.8

    thank you
    >
    regards
    xtd

    Comment

    • John Machin

      #3
      Re: floating point arithmetic

      On Aug 27, 7:11 am, fred8865 <xtd8...@gmail. comwrote:
      I understand that due to different arithmetic used in floating points
      they are just approximations. Hence, 180/100=1 in my python interpreter.
      It's not "hence". What you are seeing is truncating integer division.
      How can I tackle this problem of inaccurate floating point numbers?
      >>180 / 100
      1
      >>180 / 100.
      1.8
      >>180 / float(100)
      1.8
      >>from __future__ import division
      >>180 / 100
      1.8

      Comment

      • Rob Clewley

        #4
        Re: floating point arithmetic

        I understand that due to different arithmetic used in floating points
        they are just approximations. Hence, 180/100=1 in my python interpreter.
        No, that's not the reason you get 1, it's because the current version
        of python does integer division by default. Try doing 180.0/100 or
        including

        from __future__ import division

        at the top of your scripts before dividing your numbers.
        How can I tackle this problem of inaccurate floating point numbers?
        There are few occasions for "regular" users to worry about the
        inaccuracy of floating point, unless you are doing very technical
        calculations at high precision. If you need decimals to be represented
        "perfectly" in python (e.g. you are writing scripts for financial
        applications), try importing the decimal package (look it up in the
        python docs).

        -Rob

        Comment

        • fred8865

          #5
          Re: floating point arithmetic

          thanks guys

          fred8865 wrote:
          Hi all,
          >
          I understand that due to different arithmetic used in floating points
          they are just approximations. Hence, 180/100=1 in my python interpreter.
          How can I tackle this problem of inaccurate floating point numbers?
          thank you
          >
          regards
          xtd

          Comment

          • Terry Reedy

            #6
            Re: floating point arithmetic



            John Machin wrote:
            On Aug 27, 7:11 am, fred8865 <xtd8...@gmail. comwrote:
            >
            >I understand that due to different arithmetic used in floating points
            >they are just approximations. Hence, 180/100=1 in my python interpreter.
            >
            It's not "hence". What you are seeing is truncating integer division.
            >
            >How can I tackle this problem of inaccurate floating point numbers?
            >
            >>>180 / 100
            1
            >>>180 / 100.
            1.8
            >>>180 / float(100)
            1.8
            >>>from __future__ import division
            >>>180 / 100
            1.8
            --
            Or start using 3.0, which fixed this ;-)
            >>180/100
            1.8

            Comment

            • Gabriel Genellina

              #7
              Re: floating point arithmetic

              En Tue, 26 Aug 2008 18:11:30 -0300, fred8865 <xtd8865@gmail. comescribi�:
              I understand that due to different arithmetic used in floating points
              they are just approximations. Hence, 180/100=1 in my python interpreter.
              How can I tackle this problem of inaccurate floating point numbers?
              thank you
              In the current Python versions (2.2 and up), 180/100 means integer
              division (because both operands are integer).
              If you want a floating point result, use 180.0/100 or
              float(some_vari able)/100

              Starting with Python 3.0, the / operator will return a floating point
              result ("true division"). So in that Python version, 180/100 gives 1.8
              To enable that behavior on Python 2.x, execute "from __future__ import
              division":
              >>180/100
              1
              >>from __future__ import division
              >>180/100
              1.8

              In any Python version, 180//100 always means integer division:
              >>180//100
              1

              --
              Gabriel Genellina

              Comment

              Working...