simple string format question

Neil Cerutti neilc at norwich.edu
Thu Oct 25 08:49:20 EDT 2012


On 2012-10-25, Piet van Oostrum <piet at vanoostrum.org> wrote:
> Adrien <adnothing at gmail.com> 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



More information about the Python-list mailing list