2009-10-24 5 views
0

왜?파이썬 로케일 통화 및 음수

C:\path\>manage.py shell 
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information.  

>>> import locale 
>>> locale.getlocale() 
('Spanish_Colombia', '1252') 
>>> locale.currency(1885, grouping=True) 
'$ 1.885,00' 
>>> locale.currency(-1885, grouping=True) 
'($ 1.885,00)' 

$ -1.885,00을 반환 할 수 없습니까?

답변

2

신용 (양수)이 아닌 차변 (즉, 음수)을 나타내는 숫자 주변의 괄호는 회계에서 일반적인 규칙입니다 (괄호는 앞에있는 작은 마이너스/대시보다 눈에 잘 띄기 때문에 추측합니다. 크레딧과 빚을 구별하는 것이 중요합니다 ;-).

많은 로케일이 음수를 포맷하는 "적절한 방법"으로 그 규칙을 표현한다는 것은 놀라운 일이 아닙니다. $ 기호와 쉼표 같은 로캘의 일부 규칙을 사용하고 괄호와 같은 다른 일부는 사용하지 않으려면 로케일의 입력으로 yournumber 대신 abs (yournumber)를 사용해야합니다. 통화 번호가인 경우 작은 문자열 조작을 수행하여 첫 번째 숫자를 찾고 새 문자열을 앞의 대시 (또는 다른 문자열 조작, 음수를 표현하는 원하는 방법에 따라 다름 - 예 : "마이너스"[대쉬] 기호는 통화 기호 앞에 올 수 있거나 전체 문자열의 오른쪽에 올 수 있습니다.

왜 출력물을 읽고있는 사람이라면 누구나 로캘의 규칙을 일부만 원하지만 일부는 그렇지 않을 것이라고 생각합니까?

2

로켈에서 대괄호가있는 숫자는 음수를 나타냅니다. 이것을 제어판/지역 및 언어 설정에서 확인하십시오. 파이썬이 아마 거기에서 가져옵니다.

+0

>>> locale.setlocale (locale.LC_ALL, '') 'English_United States.1252' >>> locale.currency (-1885, 그룹화 = 참) '($ 1,885.00)'- 그래서,이 아니 내 로케일 만. 왜? – panchicore

+0

"파이썬이 아마 거기에서 그것을 집어 들고 있습니다." 별로 옳지 않습니다. 로케일 형식을 정의합니다. 파이썬은 항상 OS가 제공하는 로케일 형식을 찾습니다. 그것은 운영체제 질문입니다 - 로케일은 OS에 의해 정의됩니다. –