代码之家  ›  专栏  ›  技术社区  ›  orokusaki

python-什么是公认的货币计算技术?

  •  1
  • orokusaki  · 技术社区  · 14 年前

    举个例子:

    >>> from decimal import Decimal
    >>> nrml_price = Decimal('0.59')
    >>> discounted = nrml_price / 3  # Taking 2/3 off the price with a coupon
    Decimal('0.1966666666666666666666666667')  # Customers don't have fractions of a penny
    >>> (nrml_price / 3).quantize(D('0.00'))  # So I quantize to get 2 decimal places
    Decimal('0.20')  # Ca fait combien? Cest vingt cents.
    

    问题是,从技术上讲,我已经向客户收取了比预期价格更高的费用,虽然低于百分之三,但从技术上讲,这是错误的。

    我如何克服这样的问题?我是否会将其视为生活的一个事实,或者是否有一种公认的方式来做这类事情(例如,总是向客户收取最近的一分钱)?

    2 回复  |  直到 14 年前
        1
  •  7
  •   S.Lott    14 年前

    “有没有一种公认的方法来做这种事?”

    对。会计总是这么做。

    实际上,COBOL做得很好。

    巨蟒 decimal 包中有一组舍入选项,您可以在上下文中设置这些选项。在您的上下文中,几乎总是decimal.round-half-down或decimal.round-half-even选项。

    当为这样的零售管理构建软件时,将会有公司政策到位,由真正的会计师管理,具体说明应该做什么。

    问问从事这一行业的会计,政策是什么。

        2
  •  4
  •   SingleNegationElimination    14 年前

    这里的答案可能更依赖于您的事务处理器。您的交易处理器是否允许您转移不是整数分的货币金额?货币金额不合理怎么办?假设折扣是正常价格的平方根?

    大多数供应商(这里就是您)只需将差额汇总并保持为整美分。