Re: simple string format question

Discussion in 'Python' started by Adrien, Oct 15, 2012.

  1. Adrien

    Adrien Guest

    Le 15/10/2012 14:12, Neal Becker a écrit :
    > Is there a way to specify to format I want a floating point written with no more
    > than e.g., 2 digits after the decimal? I tried {:.2f}, but then I get all
    > floats written with 2 digits, even if they are 0:
    >
    > 2.35 << yes, that's what I want
    > 2.00 << no, I want just 2 or 2.


    Maybe you're looking for "{:.3g}"

    print "{:.3g}".format(2)
    # '2'

    print "{:.3g}".format(2.00)
    # '2'

    print "{:.3g}".format(2.35)
    # '2.35'

    print "{:.3g}".format(2.356) # this rounds up
    # '2.36'

    Cheers,

    -- Adrien
    Adrien, Oct 15, 2012
    #1
    1. Advertising

  2. Adrien <> writes:

    > print "{:.3g}".format(2.356) # this rounds up


    But:

    >>> print "{:.3g}".format(12.356)

    12.4
    >>> print "{:.3g}".format(123.356)

    123

    --
    Piet van Oostrum <>
    WWW: http://pietvanoostrum.com/
    PGP key: [8DAE142BE17999C4]
    Piet van Oostrum, Oct 25, 2012
    #2
    1. Advertising

  3. Adrien

    Neil Cerutti Guest

    On 2012-10-25, Piet van Oostrum <> wrote:
    > Adrien <> writes:
    >
    >> print "{:.3g}".format(2.356) # this rounds up

    >
    > But:
    >
    >>>> print "{:.3g}".format(12.356)

    > 12.4
    >>>> print "{:.3g}".format(123.356)

    > 123



    The precision is a decimal number indicating how many digits
    should be displayed after the decimal point for a floating
    point value formatted with 'f' and 'F', or before and after the
    decimal point for a floating point value formatted with 'g' or
    'G'. For non-number types the field indicates the maximum field
    size - in other words, how many characters will be used from
    the field content. The precision is not allowed for integer
    values.

    So g will print a specific number of significant digits, so it
    won't do what Adrien wants.

    And f will print a fixed number of digits after the decimal
    point, so it won't do want Adrien wants.

    Adrien, you will need to do some post-processing on fixed point
    output to remove trailing zeroes.

    >>> print("{:.2f}".format(2.1).rstrip('0'))

    2.1
    >>> print("{:.2f}".format(2.127).rstrip('0'))

    2.13

    --
    Neil Cerutti
    Neil Cerutti, Oct 25, 2012
    #3
    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. ankur
    Replies:
    1
    Views:
    12,737
    Jan =?UTF-8?B?VGhvbcOk?=
    Aug 27, 2007
  2. Neal Becker

    simple string format question

    Neal Becker, Oct 15, 2012, in forum: Python
    Replies:
    0
    Views:
    153
    Neal Becker
    Oct 15, 2012
  3. Chris Angelico
    Replies:
    3
    Views:
    151
    Mark Lawrence
    Mar 1, 2013
  4. Peter Otten
    Replies:
    0
    Views:
    131
    Peter Otten
    Feb 28, 2013
  5. Rick Johnson
    Replies:
    0
    Views:
    138
    Rick Johnson
    Feb 28, 2013
Loading...

Share This Page