On Friday, 4 January 2019 14:57:53 GMT Łukasz Stelmach wrote: > Hi, > > I would like to present two pull requests[1][2] implementing fixed point > presentation of numbers and ask for comments. The first is mine. I > learnt about the second after publishing mine. > > The only format using decimal separator from locale data for > float/complex/decimal numbers at the moment is "n" which behaves like > "g". The drawback of these formats, I would like to overcome, is the > inability to print numbers ranging more than one order of magnitude with > the same number of decimal digits without "manually" (with some additional > custom code) adjusting precission. The other option is to "manually" > replace "." as printed by "f" with a local decimal separator. Neither of > these option is appealing to my. > > Formatting 1.23456789 * n (LC_ALL=3Dpl_PL.UTF-8) > > | n | ".2f" | ".3n" | > | > |---+----------+----------| > | > | 1 | 1.23 | 1,23 | > | 2 | 12.35 | 12,3 | > | 3 | 123.46 | 123 | > | 4 | 1234.57 | 1,23e+03 |
Can you use locale.format_string() to solve this? I used this to test: import locale n = 1.23456789 for order in range(5): m = n * (10**order) for lang in ('en_GB.utf8', 'pl_PL.utf8'): locale.setlocale(locale.LC_ALL, lang) print( 'python %%.2f in %s: %.2f' % (lang, m) ) print( locale.format_string('locale %%.2f in %s: %.2f', (lang, m), grouping=True) ) print() Which outputs: python %.2f in en_GB.utf8: 1.23 locale %.2f in en_GB.utf8: 1.23 python %.2f in pl_PL.utf8: 1.23 locale %.2f in pl_PL.utf8: 1,23 python %.2f in en_GB.utf8: 12.35 locale %.2f in en_GB.utf8: 12.35 python %.2f in pl_PL.utf8: 12.35 locale %.2f in pl_PL.utf8: 12,35 python %.2f in en_GB.utf8: 123.46 locale %.2f in en_GB.utf8: 123.46 python %.2f in pl_PL.utf8: 123.46 locale %.2f in pl_PL.utf8: 123,46 python %.2f in en_GB.utf8: 1234.57 locale %.2f in en_GB.utf8: 1,234.57 python %.2f in pl_PL.utf8: 1234.57 locale %.2f in pl_PL.utf8: 1 234,57 python %.2f in en_GB.utf8: 12345.68 locale %.2f in en_GB.utf8: 12,345.68 python %.2f in pl_PL.utf8: 12345.68 locale %.2f in pl_PL.utf8: 12 345,68 Barry _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/