2013-11-15 2 views
1

Так что я пытался закодировать раздел в моем классе кассовых аппаратов. Я пытаюсь сделать так, чтобы он отслеживал общую цену как целое. поэтому, например, 18.66 будет 1866. Но я все еще хочу, чтобы это считалось 18.66, если это имеет смысл. это позволяет избежать накопления ошибок округления. Но я не хочу менять публичный интерфейс класса.Десятичные разряды в python 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 decimal: http://docs.python.org/3/library/decimal.html – nickzam

ответ

0

Вы должны хранить данные как есть.

Вы можете достичь того, чего хотите, путем форматирования. Если бы я тебя, я буду добавлять новые функции, как это:

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

Такой подход даст вам больше гибкости в будущем

+0

Это не всегда '* 100', вы знаете? :) – aIKid

Смежные вопросы