This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2009年03月19日 00:33 by eric.smith, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Messages (8) | |||
|---|---|---|---|
| msg83797 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2009年03月19日 00:33 | |
I think the way leading zero padding is handled for int and float by format's 'n' code is a bug. >>> import locale >>> locale.setlocale(locale.LC_ALL, 'en_US.UTF8') 'en_US.UTF8' >>> format(12345, '010n') '000012,345' >>> format(12345, '09n') '00012,345' >>> format(12345, '08n') '0012,345' >>> format(12345, '07n') '012,345' >>> format(12345, '06n') '12,345' When 'n' support was added to Decimal, leading zeros had commas in them: >>> from decimal import Decimal >>> format(Decimal(12345), '010n') '00,012,345' >>> format(Decimal(12345), '09n') '0,012,345' >>> format(Decimal(12345), '08n') '0,012,345' >>> format(Decimal(12345), '07n') '012,345' >>> format(Decimal(12345), '06n') '12,345' Decimal also has the same support for PEP 378's ',' modifier: >>> format(Decimal(12345), '010,') '00,012,345' >>> format(Decimal(12345), '09,') '0,012,345' >>> format(Decimal(12345), '08,') '0,012,345' >>> format(Decimal(12345), '07,') '012,345' >>> format(Decimal(12345), '06,') '12,345' >>> As I'm implementing PEP 378 for int and float, I'm going to make it work the same way that Decimal works. For consistency, and because I think the current behavior is not useful, I'd like to change float and int formatting with 'n' to match Decimal and PEP 378 for the ',' modifier. Since I consider this a bug, I'd like to consider backporting it to 2.6 and 3.0, if the changes aren't too intrusive. |
|||
| msg83799 - (view) | Author: Raymond Hettinger (rhettinger) * (Python committer) | Date: 2009年03月19日 01:11 | |
I concur with your plan. BTW, have you checked to see what Java and C# do? |
|||
| msg83805 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2009年03月19日 10:44 | |
C# doesn't seem to have the issue because they don't allow any modifies when specifying locale-aware formatting. Specifying a picture seems to be the only way to get leading zeros added. Similarly, Java looks to be picture-based. |
|||
| msg83815 - (view) | Author: Mark Dickinson (mark.dickinson) * (Python committer) | Date: 2009年03月19日 17:46 | |
I agree that Decimal should be consistent with int and float. I'm not sure I'd classify the current behaviour as a bug, though: presumably this behaviour was intentional at the time it was originally coded? I guess backporting *probably* won't do any harm, since it seems likely that format(x, 'n') hasn't gained wide adoption yet. +1 for changing this in 2.7 and 3.1; -0 for backporting the change. Eric, did you mean to assign this to me? I'm not sure I have time for this at the moment, though I'd be happy to review and test when the time comes. |
|||
| msg83817 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2009年03月19日 18:06 | |
Oops, assigning it to you was an error. I was just trying to figure out what your userid is so I could add you to Nosy, and I was using "Assigned To" to find it. I've fixed that. The current behavior is an accident of the implementation. The implementation isn't based on anything else, and there was no requirement to have the output that it does. And as far as I know, there are no tests that test for the current behavior. Right now I'm +0 on backporting. What I'll do is fix it for 2.7/3.1 and see how big the patch is. I suspect it will be a pretty big, invasive patch. If so, I'll change my backport vote to -1. |
|||
| msg85908 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2009年04月12日 16:25 | |
This won't get fixed in 3.0 or 2.6. Still not sure about 2.7, but I'm considering how to fix it there. |
|||
| msg86041 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2009年04月16日 20:41 | |
Fixed in py3k (will be 3.1) in r71665. |
|||
| msg86298 - (view) | Author: Eric V. Smith (eric.smith) * (Python committer) | Date: 2009年04月22日 14:47 | |
Fixed in trunk as part of r71796. Closing the issue. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:46 | admin | set | github: 49765 |
| 2009年04月22日 14:47:54 | eric.smith | set | status: open -> closed resolution: fixed messages: + msg86298 |
| 2009年04月16日 20:41:27 | eric.smith | set | messages: + msg86041 |
| 2009年04月16日 20:41:05 | eric.smith | set | messages: - msg86040 |
| 2009年04月16日 20:40:57 | eric.smith | set | messages: + msg86040 |
| 2009年04月12日 16:25:45 | eric.smith | set | messages:
+ msg85908 versions: - Python 2.6, Python 3.0 |
| 2009年03月19日 18:06:58 | eric.smith | set | assignee: mark.dickinson -> eric.smith messages: + msg83817 |
| 2009年03月19日 17:46:06 | mark.dickinson | set | messages: + msg83815 |
| 2009年03月19日 10:44:32 | eric.smith | set | messages: + msg83805 |
| 2009年03月19日 01:11:07 | rhettinger | set | messages: + msg83799 |
| 2009年03月19日 00:33:56 | eric.smith | create | |