floating point arithmetic

Discussion in 'Python' started by fred8865, Aug 26, 2008.

  1. fred8865

    fred8865 Guest

    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
    fred8865, Aug 26, 2008
    #1
    1. Advertising

  2. fred8865

    Mensanator Guest

    On Aug 26, 4:11 pm, 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?


    Try actually using floating point numbers, not integers:

    >>> 180.0/100

    1.8

    or

    >>> float(180)/100

    1.8


    > thank you
    >
    > regards
    > xtd
    Mensanator, Aug 26, 2008
    #2
    1. Advertising

  3. fred8865

    John Machin Guest

    On Aug 27, 7:11 am, fred8865 <> wrote:

    > 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
    John Machin, Aug 26, 2008
    #3
  4. fred8865

    Rob Clewley Guest

    > 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
    Rob Clewley, Aug 26, 2008
    #4
  5. fred8865

    fred8865 Guest

    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
    fred8865, Aug 27, 2008
    #5
  6. fred8865

    Terry Reedy Guest

    John Machin wrote:
    > On Aug 27, 7:11 am, fred8865 <> wrote:
    >
    >> 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
    Terry Reedy, Aug 27, 2008
    #6
  7. En Tue, 26 Aug 2008 18:11:30 -0300, fred8865 <> escribi�:

    > 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_variable)/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
    Gabriel Genellina, Aug 27, 2008
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Amit Bhatia

    Floating point arithmetic.

    Amit Bhatia, Jul 11, 2004, in forum: C++
    Replies:
    14
    Views:
    737
    P.J. Plauger
    Jul 14, 2004
  2. Amit Bhatia

    Floating point arithmetic.

    Amit Bhatia, Jul 11, 2004, in forum: C Programming
    Replies:
    5
    Views:
    313
    Christian Bau
    Jul 18, 2004
  3. Shawn
    Replies:
    11
    Views:
    556
    Gregory Pietsch
    Jul 21, 2004
  4. Satpreet
    Replies:
    1
    Views:
    473
    Michael Mair
    Feb 27, 2006
  5. Saraswati lakki
    Replies:
    0
    Views:
    1,321
    Saraswati lakki
    Jan 6, 2012
Loading...

Share This Page