float problem

Discussion in 'Python' started by Indigo Moon Man, Sep 24, 2003.

  1. for the formula J = I / (12 * 100) where I is low (like about 8 to 15) I
    get 0. But when I do it with a calculator it's actually .008333 for example
    if I were 10. Is there a way I can get python to recognize the .008333
    instead of it just giving me 0?

    TIA for your help!

    --
    Audio Bible Online:
    http://www.audio-bible.com/
     
    Indigo Moon Man, Sep 24, 2003
    #1
    1. Advertising

  2. Indigo Moon Man

    Greg Krohn Guest

    "Indigo Moon Man" <> wrote in message
    news:bkrai0$50pag$-berlin.de...
    > for the formula J = I / (12 * 100) where I is low (like about 8 to 15) I
    > get 0. But when I do it with a calculator it's actually .008333 for

    example
    > if I were 10. Is there a way I can get python to recognize the .008333
    > instead of it just giving me 0?
    >
    > TIA for your help!
    >
    > --
    > Audio Bible Online:
    > http://www.audio-bible.com/
    >


    Normally division with integers gives an integer result losing everything
    after the decimal. Couple of things you can do about that, but basically you
    have to convert your denominator or divisor to a float before you divide:

    J = I / float(12 * 100)

    or

    J = float(I) / (12 * 100)

    Alternativly you could use 12.0 instead of 12 (or 100.0 instead of 100 for
    that matter)

    J = I / (12.0 * 100)

    or

    J = I / (12 * 100.0)

    And last, but not least, you can import from future to make all division
    "lossless":

    from __future__ import division
    J = I / (12 * 100)


    I personally prefer the first one, but they will all work fine.


    greg
     
    Greg Krohn, Sep 24, 2003
    #2
    1. Advertising

  3. Indigo Moon Man

    Gary Herron Guest

    On Tuesday 23 September 2003 10:34 pm, Indigo Moon Man wrote:
    > for the formula J = I / (12 * 100) where I is low (like about 8 to 15) I
    > get 0. But when I do it with a calculator it's actually .008333 for
    > example if I were 10. Is there a way I can get python to recognize the
    > .008333 instead of it just giving me 0?


    You're getting bit by the difference between integer and float
    division.

    In versions of python prior to 2.3 (and in 2.3 under normal
    circumstances), division of two integers returns an integer and
    division of two floats (or a float and an integer )returns a float:

    >>> 2/3

    0
    >>> 2/3.0

    0.66666666666666663
    >>> 2.0/3.0

    0.66666666666666663
    >>>


    So one solution would be to make sure the numbers you are dividing are
    floats when you want a float in return.

    In future version of Python, there will be two dividion operators:
    / will always return a float
    // will always return an int

    In Python 2.3, you can experiment with the future behavior by starting
    your program with:

    >>> from __future__ import division
    >>> 2/3

    0.66666666666666663
    >>> 2//3

    0
    >>>


    So depending on your version of Python, this may be another solution.

    Gary Herron
     
    Gary Herron, Sep 24, 2003
    #3
  4. Gary Herron <> spake thusly:
    >
    > You're getting bit by the difference between integer and float
    > division.
    >
    > In versions of python prior to 2.3 (and in 2.3 under normal
    > circumstances), division of two integers returns an integer and
    > division of two floats (or a float and an integer )returns a float:
    >

    Great! Thank you very much!


    --
    Audio Bible Online:
    http://www.audio-bible.com/
     
    Indigo Moon Man, Sep 24, 2003
    #4
  5. Greg Krohn <> spake thusly:
    >
    > Normally division with integers gives an integer result losing everything
    > after the decimal. Couple of things you can do about that, but basically
    > you have to convert your denominator or divisor to a float before you
    > divide:
    >

    That's great! Thank you very much for your help!

    --
    Audio Bible Online:
    http://www.audio-bible.com/
     
    Indigo Moon Man, Sep 24, 2003
    #5
    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. Andy
    Replies:
    7
    Views:
    6,296
    Roedy Green
    May 10, 2004
  2. Jim West
    Replies:
    4
    Views:
    1,472
    Jeff Schwab
    Jan 16, 2004
  3. Jukka Lehtonen

    operator== (float, float)

    Jukka Lehtonen, Aug 4, 2004, in forum: C++
    Replies:
    5
    Views:
    2,442
    Jukka Lehtonen
    Aug 5, 2004
  4. bd
    Replies:
    0
    Views:
    651
  5. Carsten Fuchs
    Replies:
    45
    Views:
    1,610
    James Kanze
    Oct 8, 2009
Loading...

Share This Page