我正在寻找一种pythonic方法来获得十进制除法的其余部分。
我的用例是我想为多种产品发送一个价格。例如,我收到了 3 件商品的 10 美元订单,我想在不损失任何美分的情况下发送 3 件产品的价格:)
而且因为它是一个价格,所以我只想要两位小数。
到目前为止,这是我找到的解决方案:
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
谢谢 !
最佳答案
通过将您的价格乘以 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 转换为字符串。
关于python - 如何在python中获得十进制除法余数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44775536/