|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
decimal 模块为快速正确舍入的十进制浮点运算提供了支持。! n- q1 `0 e3 j7 }1 G6 ?
// 它提供float数据类型有以下几个优点: ; _- j# j, N1 \0 x) l. z
- 十进制数字可以准确表示:数字如 1.1 和 2.2 在二进制浮点中没有精确的表示。$ Y+ `5 Y% g6 i# e" w
- >>> 1.1 + 2.2: L' M2 `. _2 P
- 3.3000000000000003
# @: B/ c$ n" F# {+ Q - >>> from decimal import Decimal; M8 e8 T0 f+ b3 r- t* D
- >>> Decimal('1.1') + Decimal('2.2')
" x2 i- U" ?( f, P" v - Decimal('3.3')
复制代码- 精确性延续到算术中。
- 保留尾随零以表示重要性。
8 V) k6 d& n8 M5 M: u+ T3 e; v
- >>> 1.20*1.30* k- V. J" H6 T! U4 u5 M2 _; f x
- 1.56
' q8 X& _2 P" w- |) H - >>> Decimal('1.20')*Decimal('1.30')
0 T0 x5 x: b+ A! b( i - Decimal('1.5600')
复制代码 常用方法
% J5 Q2 P2 @5 }8 \- class decimal.Decimal(value="0", context=None)
复制代码
5 R" i: K7 ~# J* |) Y1 g- 可以传递给Decimal整型或者字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。
/ Y2 t* F! e+ k+ Q5 c5 y( ^: {- >>> from decimal import */ M' o$ d- S0 |
- >>> Decimal(1.1) + Decimal(2.2)& ?5 T$ G8 w" x' g: W& |
- Decimal('3.300000000000000266453525910'# M+ K& K8 o) w2 Q4 q
- >>> Decimal('1.1') + Decimal('2.2')
3 z" K+ O9 W6 `8 u - Decimal('3.3')
复制代码
( Y9 S$ C3 C& ?$ f - 通过设定有效数字,限定结果样式。" P5 N7 |/ w7 ~8 E# q
- >>> getcontext().prec = 6
" ]5 y: S" h: d! f6 u - >>> Decimal(1)/Decimal(7)# F5 d; C5 |# @7 p
- Decimal('0.142857')4 x* j6 ]+ \$ T3 }8 Y
- >>> getcontext().prec = 28$ }8 t$ p0 ]; t
- >>> Decimal(1) / Decimal(7)+ c' D, H! H g7 A; F4 A( e d* ?
- Decimal('0.1428571428571428571428571429')
复制代码
. u$ |: k3 M8 D& x; Z" |- W X - 四舍五入,保留几位小数。
; d7 t4 k6 ]7 `' _- >>> Decimal('12.3456').quantize(Decimal('0.00'))
$ X1 ?+ r0 J8 y3 G - Decimal('12.35')& Y' {( k6 k1 u5 n* P
- >>> Decimal('12.3456').quantize(Decimal('1.1'))
* d3 ^) W! P1 k0 Y! [ - Decimal('12.3')
复制代码
: o$ [4 p0 H% S+ {6 {5 z5 w
|
|