Cheat sheet for the new string formatting?

random832 at fastmail.us random832 at fastmail.us
Mon Jun 8 16:52:04 EDT 2015


On Mon, Jun 8, 2015, at 16:32, Skip Montanaro wrote:
> This is counterintuitive:
> 
> >>> "{:.3}".format(-0.00666762259822)
> '-0.00667'
> >>> "{:.3f}".format(-0.00666762259822)
> '-0.007'
> >>> "%.3f" % -0.00666762259822
> '-0.007'
> >>> "{:.3s}".format(-0.00666762259822)
> ValueError Unknown format code 's' for object of type 'float'
> 
> Why does the first form display five digits after the decimal point?

Because it's three significant figures. Using .3 alone with a float is
equivalent to %.3g, not %.3f

> Why don't floats support "{:.Ns}"? (I know I can use "{!s}".)

Why would they? The old style didn't support %.Ns either. If you want a
width like "%50s" it's {!s:50}. But if you're using !s (or %s with the
old style) you don't get to specify the significant digits, only the
field width, so it's not clear what old-style code you're trying to find
an equivalent to.



More information about the Python-list mailing list