Mark Dickinson <> added the comment:

The behaviour here is intentional, though the reasons for doing it this way are 
at least partly historical: it's the way that %g formatting works in C's 
*printf functions (see C99 for details), and as a direct result of 
that it's also the way that old-style %-based formatting works in Python. That 
behaviour then got transferred to the new-style .format-based formatting for 

I don't think we can or should change the current behaviour here: there's a 
significant risk of breaking existing code.

However, note that C does offer an *alternate* mode for .g-style formatting, 
using the '#' character, and this is also available in Python's formatting, 
both %-based and format-based:

>>> "%.2g" % 0.1950
>>> "%#.2g" % 0.1950


>>> format(0.1950, '.2g')
>>> format(0.1950, '#.2g')

Does this meet your needs?

nosy: +eric.smith, mark.dickinson

Python tracker <>
Python-bugs-list mailing list

Reply via email to