2013-11-15 3 views
1

그래서 저는 금전 등록기 클래스에서 섹션을 코딩하려고했습니다. Im은 총 가격을 정수로 추적 할 수 있도록하려고 시도합니다. 그래서 예를 들어 18.66은 1866이 될 것입니다.하지만 말이 맞는다면 18.66으로 간주되기를 원합니다. 이것은 반올림 오류의 누적을 피할 수 있도록하기위한 것입니다. 하지만 클래스의 공용 인터페이스를 변경하고 싶지 않습니다.파이썬에서 소수점 이하 3

#!/usr/local/bin/python3 

class CashRegister : 
    def __init__(self): 
     self._itemCount = 0 
     self._totalPrice = 0.0 

    def addItem(self, price): 
     self._itemCount = self._itemCount + 1 
     self._totalPrice = self._totalPrice + price 

    def getTotal(self): 
     return self._totalPrice 

    def getCount(self) : 
     return self._itemCount 

    def clear(self) : 
     self._itemCount = 0 
     self._totalPrice = 0.0 

단순히 0.0을 0으로 변경하지 않습니까? 또는 분할 방법을 수행하고 다시 연결하는 방식으로 진행하겠습니까?

+3

는 [소수를 (사용으로 간주 가지고 http://docs.python.org /2/library/decimal.html)? – dawg

+0

python3 십진수에 대한 올바른 링크는 다음과 같습니다. http://docs.python.org/3/library/decimal.html – nickzam

답변

0

데이터를 그대로 유지해야합니다.

형식을 지정하여 원하는 것을 얻을 수 있습니다. 내가 너라면이 같은 새로운 기능을 추가합니다 :

def getTotalAsString(self): 
     return "%d" % (self._totalPrice * 100) 

이 방법이 당신에게 더 많은 유연성을 제공합니다

+0

언제나 '* 100'이 아니죠? :) – aIKid

관련 문제