举个例子:
>>> 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.
问题是,从技术上讲,我现在向客户收取的价格高于预期价格,尽管不到 3/10 美分,但这在技术上是不正确的。
我该如何克服这样的问题?我是否将其视为生活中的一个事实而忽略它,或者是否有一种可以接受的方式来做这种事情(例如,总是向客户收取最近的一分钱)?
请您参考如下方法:
“有没有一种公认的方法来做这种事情”
是的。会计师一直这样做。
事实上,COBOL 在这方面做得非常好。
Python decimal 包有一堆舍入选项,您可以在上下文中设置。 decimal.ROUND_HALF_DOWN 或 decimal.ROUND_HALF_EVEN 选项几乎总是您在上下文中想要的。
在构建像这样的零售管理软件时,会有公司政策到位,由真实的会计师管理,这些政策规定了应该做什么。
询问从事该业务的会计师政策是什么。
