|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
decimal 模块为快速正确舍入的十进制浮点运算提供了支持。, q2 R/ T2 D( |1 Q E, f' M7 {
// 它提供float数据类型有以下几个优点: 1 N" f1 d5 s5 }, W% n1 w$ }, {
- 十进制数字可以准确表示:数字如 1.1 和 2.2 在二进制浮点中没有精确的表示。
0 Z( A0 e$ n; T3 \
- >>> 1.1 + 2.2' ~) R5 |) }: r: s! r7 S) a& S
- 3.3000000000000003& X2 X- [, K$ U9 y
- >>> from decimal import Decimal
1 d5 L# `( D0 V+ d7 k" c5 {0 y' I - >>> Decimal('1.1') + Decimal('2.2')$ {0 Y8 f- q- ] b
- Decimal('3.3')
复制代码- 精确性延续到算术中。
- 保留尾随零以表示重要性。& _2 {. e' H7 F; @
- >>> 1.20*1.30$ B2 i2 |6 x' E& [" j- E% K
- 1.56
9 ]$ t) R% `6 h/ n5 _$ c - >>> Decimal('1.20')*Decimal('1.30')" \# C- V" ?/ ^) S _( {. A
- Decimal('1.5600')
复制代码 常用方法
+ Q+ {. V# g' k( C) g- class decimal.Decimal(value="0", context=None)
复制代码
6 L# Y: h+ C# p& R: J- 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。
! v& P) P- v- |+ C* ]* Z- >>> from decimal import *0 d( k# B0 Y" j
- >>> Decimal(1.1) + Decimal(2.2)* X$ ^. G* y: R2 ?, N* G
- Decimal('3.300000000000000266453525910'! T' t: ~9 j' d- |, K
- >>> Decimal('1.1') + Decimal('2.2')+ j2 Q, q- L. w& u. P
- Decimal('3.3')
复制代码
( s, M" q! y& B/ G2 A* H - 通过设定有效数字,限定结果样式。% T/ \% ?$ J, P# D) U# {
- >>> getcontext().prec = 62 f/ ~, j; c9 E" F
- >>> Decimal(1)/Decimal(7)
3 C# _$ P, O$ a - Decimal('0.142857')% }/ B0 T9 n6 I3 o; e) w; k/ S
- >>> getcontext().prec = 28
9 s) d; {' n5 T0 c ^6 Z9 w - >>> Decimal(1) / Decimal(7)
( c `& g5 z- B( @ - Decimal('0.1428571428571428571428571429')
复制代码 A# W$ V. e/ Q9 r& B7 d* `
- 四舍五入,保留几位小数。5 |! c" I# X2 J7 \+ l
- >>> Decimal('12.3456').quantize(Decimal('0.00'))3 }6 C4 `) m1 Q& g% q# ?. L$ X- n
- Decimal('12.35')+ R8 X# d4 x$ f9 P# u
- >>> Decimal('12.3456').quantize(Decimal('1.1'))
3 P6 p p- k2 t9 R5 e - Decimal('12.3')
复制代码
% X# \- {& z8 ~8 L) `8 u% K
|
|