Python 精度

要求较小的精度

round

使用格式化 round()是一样的

要求超过17位的精度分析

python默认的是17位精度,也就是小数点后16位

高精度使用decimal模块,配合getcontext

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> from decimal import *
>>> print(getcontext())
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
>>> getcontext().prec = 50
>>> b = Decimal(1)/Decimal(3)
>>> b
Decimal('0.33333333333333333333333333333333333333333333333333')
>>> c = Decimal(1)/Decimal(7)
>>> c
Decimal('0.14285714285714285714285714285714285714285714285714')
>>> float(c)
0.14285714285714285  

math模块的ceil(x) 取>=x的最小整数。 math模块的floor(x) 取<=x的最大整数