【发布时间】:2019-07-02 07:53:52
【问题描述】:
我想在货币计算中使用小数,所以我想处理逗号后面的两个数字。一开始我以为decimal的context的prec是指那个属性,但是经过几次实验后,我觉得有点困惑。
实验 #1:
In [1]: import decimal
In [2]: decimal.getcontext().prec = 2
In [3]: a = decimal.Decimal('159.9')
In [4]: a
Out[4]: Decimal('159.9')
In [5]: b = decimal.Decimal('200')
In [6]: b
Out[6]: Decimal('200')
In [7]: b - a
Out[7]: Decimal('40')
实验 #2:
In [8]: decimal.getcontext().prec = 4
In [9]: a = decimal.Decimal('159.9')
In [10]: a
Out[10]: Decimal('159.9')
In [11]: b = decimal.Decimal('200')
In [12]: b
Out[12]: Decimal('200')
In [13]: b - a
Out[13]: Decimal('40.1')
实验 #3:(prec 仍设置为 4)
In [14]: a = decimal.Decimal('159999.9')
In [15]: a
Out[15]: Decimal('159999.9')
In [16]: b = decimal.Decimal('200000')
In [17]: b
Out[17]: Decimal('200000')
In [18]: b - a
Out[18]: Decimal('4.000E+4')
为什么它会像我的示例那样工作?在我的(货币计算)案例中,我应该如何处理小数?
【问题讨论】:
-
在实验 3 中,
prec设置为 2 对吗? -
正如我提到的,设置为 4。
-
@AndrejKesely 是的,但我的意思是逗号后两个位置的确切结果
-
@Gregory 在你提到的问题中没有提到
prec