如何将小数乘以相同的小数位数

时间:2018-12-27 02:28:21

标签: python python-3.x

星期三哇-尝试使用小数学习“简单”算术

>>> a = Decimal('100.00')
>>> a
Decimal('100.00')
>>> b = Decimal('4.00')
>>> b
Decimal('4.00')
>>> a + b
Decimal('104.00')
>>> a * b
Decimal('400.0000')

如何将小数乘以2个小数位,以将/舍入/限制为2位? (4.00 * 100.00 => 400.0000 [即小数点后4位而不是2位])

我正在尝试计算货币,税款,小计,订单项等……只是一些基本的会计算法。以下是一些输入和预期输出:

4.00 * 100.00 => 400.00
0.01 * 0.01 => 0.00
1.00 * 0.07 => 0.07
1.00 * 0.075 => 0.08 (im not sure I may have a use case for that, but Im sure it could be chained/curried to get that [ie `a = 7.50 / 100` then `100.00 * a` => `0.08`])

我不确定这是否称为精度误差,蠕变或什么……。

1 个答案:

答案 0 :(得分:1)

您可以使用quantize()来设置小数的小数位。

例如

>>> d = Decimal(123.456789)
>>> d.quantize(Decimal('0.01'))
Decimal('123.46')

例如,您可以这样做

c = (a*b).quantize(Decimal('0.01'))
# or 
c = (a*b).quantize(a)    # c will be in same exponent as a
# or, depending your preference in style
c = getcontext().quantize( a*b, Decimal('0.01'))