Mark Summerfield <[EMAIL PROTECTED]> added the comment: On 2008-05-09, Mark Dickinson wrote: > Mark Dickinson <[EMAIL PROTECTED]> added the comment: > > I think that n should stay the same for floats, but for integers should > > never switch to g, but just use as many separators as needed. > > I agree with this, in principle. It might be some work to implement, > though: for floats, Python gets to use the OS-supplied formatting > functions. Indeed, it looks as though all that happens here is that the > > integer is converted to a float before formatting: > >>> print("{0:n} ".format(10**400), end="") > > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > OverflowError: Python int too large to convert to C double > > For integers, we'd have to roll our own code. I had similar problems > trying to implement the 'n' format code for Decimal; in the end I just > gave up and left it unimplemented. Maybe using 'n' for an integer should > just raise an exception, for now? > > Eric, what do you think?
It isn't hard (in Python): import locale locale.setlocale(locale.LC_ALL, "") separator = locale.localeconv()["thousands_sep"] def n_format(integer, separator): chars = [] for i, char in enumerate(reversed("{0:d}".format(integer))): if i and not i % 3: chars.insert(0, separator) chars.insert(0, char) return "".join(chars) __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue2802> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com