oro*_*aki 1 python concurrency currency
请看以下示例:
>>> 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.
Run Code Online (Sandbox Code Playgroud)
问题是,我现在已经在技术上向客户收取超过预期价格的费用,尽管不到3/10美分,但技术上不正确.
我如何克服这样的问题?我是否将其视为生活中的事实,或者是否有可接受的方式来做这种事情(例如,总是向客户收取最近的便士)?
"有没有一种可接受的方式来做这种事情"
是.会计师一直这样做.
事实上,COBOL做得非常好.
Python decimal包中有一堆在上下文中设置的舍入选项.几乎总是在您的上下文中使用decimal.ROUND_HALF_DOWN或decimal.ROUND_HALF_EVEN选项.
在为这样的零售管理构建软件时,将制定公司政策,由真实会计师管理,规定应该做什么.
询问与该业务部门合作的会计师,该政策是什么.
这里的答案实际上可能更多地取决于您的事务处理器。您的交易处理器是否允许您转移非整数美分的货币金额?非理性价值货币金额呢?说折扣是正常价格的平方根?
大多数供应商(这就是你在这里)会简单地四舍五入并保持差异,以整分计。