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