반올림 오류를 방지하기 위해 돈을 표시하는 데 사용해야하는 클래스는 무엇입니까?돈을 대표하는 데 사용할 클래스는 무엇입니까?
Decimal
또는 간단한 내장형 number
을 사용해야합니까?
사용할 수있는 통화 변환을 지원하는 기존 Money
클래스가 있습니까?
나는 피해야 할 함정이 있습니까?
반올림 오류를 방지하기 위해 돈을 표시하는 데 사용해야하는 클래스는 무엇입니까?돈을 대표하는 데 사용할 클래스는 무엇입니까?
Decimal
또는 간단한 내장형 number
을 사용해야합니까?
사용할 수있는 통화 변환을 지원하는 기존 Money
클래스가 있습니까?
나는 피해야 할 함정이 있습니까?
저는 여러분이 파이썬에 대해 이야기한다고 가정합니다. http://code.google.com/p/python-money/ "파이썬에서 돈과 통화 작업을위한 프리미티브"- 제목은 자기 설명 :
이이 라이브러리를 살펴볼 수 있습니다 : python-money. 경험이 없으므로 그 유용성에 대해서는 언급 할 수 없습니다.
A '트릭'은 정수로 통화를 처리하기 위해 고용 수 : 100 (예를 들어 $ 100,25 -> 10025) 100/나누기에 의해
많은 회계 시스템이 센트보다 훨씬 정확하게 물건을 추적합니다. –
사실,하지만 모두 내가 필요로하는 것 같아 ...이 스레드에서 참조 된 quantlib 라이브러리 '심각한'재정적 인 작업에 대한 좋은 후보 것 같습니다. – ChristopheD
돈을 나타내는 데 부동 소수점 숫자를 사용하지 마십시오. 부동 숫자는 10 진수 표기법의 숫자를 정확하게 나타내지 않습니다. 당신은 복잡한 반올림 오류의 악몽으로 끝날 것이고, 통화간에 안정적으로 변환 할 수 없습니다. Martin Fowler's short essay on the subject을 참조하십시오.
클래스를 직접 작성하려면 decimal 데이터 유형을 기준으로하는 것이 좋습니다.
python-money는 좋은 옵션이라고 생각하지 않습니다. 왜냐하면 꽤 오랜 기간 동안 유지되지 않았기 때문에 소스 코드에 이상하고 쓸모없는 코드가 있고 통화 교환이 간단 해 졌기 때문입니다.
시도 py-moneyed. 그것은 python-money보다 개선 된 것입니다.
간단하고, 경량, 아직 확장 아이디어 :
class Money():
def __init__(self, value):
# internally use Decimal or cents as long
self._cents = long(0)
# Now parse 'value' as needed e.g. locale-specific user-entered string, cents, Money, etc.
# Decimal helps in conversion
def as_my_app_specific_protocol(self):
# some application-specific representation
def __str__(self):
# user-friendly form, locale specific if needed
# rich comparison and basic arithmetics
def __lt__(self, other):
return self._cents < Money(other)._cents
def __add__(self, other):
return Money(self._cents + Money(other)._cents)
할 수 있습니다 :
나는 항상 통화 변환이 곱셈이라고 생각했습니다. – SilentGhost
@SilentGhost : 예, 아니오. 당신은 당신이 가지고있는 가치들을 어떻게 사용할 것인지를 명심해야합니다. 작년에 U $ S2000 + AR $ 6300 + € 1500를 지불했을 때 어떻게합니까? 그리고 올해에 U $ S4000 + AR $ 1200 + € 500를 지불 했습니까?여러분이 고려해야 할 많은 것들이 있으므로,'돈'객체는 역사적 가치와 현재 가치를 저장할 필요가 있습니다. – voyager
피할 수있는 피탄 : 부동 소수점 숫자 사용. Office Space를 참조하십시오. –