如何在python3中获得十进制除法?

时间:2017-06-27 08:28:26

标签: python decimal

我正在寻找一种获得十进制除法余数的pythonic方法。

我的用例是我想在几种产品上发一个价格。例如,我收到了10件订单,包含3件商品,我想在3件商品上发货,而不会丢失任何美分:)

因为这是一个价格,我只想要2位小数。

到目前为止,我找到了解决方案:

from decimal import Decimal

twoplaces = Decimal('0.01')

price = Decimal('10')
number_of_product = Decimal('3')

price_per_product = price / number_of_product

# Round up the price to 2 decimals
# Here price_per_product = 3.33 
price_per_product = price_per_product.quantize(twoplaces)

remainder = price - (price_per_product * number_of_product)
# remainder = 0.01

我想知道是否有更多的pythonic方法来实现它,例如整数:

price = 10
number_of_product = 3

price_per_product = int(price / number_of_product)
# price_per_product = 3
remainder = price % number_of_product 
# remainder = 1

谢谢!

1 个答案:

答案 0 :(得分:4)

通过将您的价格乘以100转换为美分,以美分计算所有数学,然后转换回来。

price = 10
number_of_product = 3

price_cents = price * 100

price_per_product = int(price_cents / number_of_product) / 100
# price_per_product = 3
remainder = (price_cents % number_of_product) / 100
# remainder = 1

然后使用Decimal转换为字符串。