参考: http://www.cnblogs.com/herbert/p/3402245.html
1. round(m, n)
如果不指定位数n的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)
整数部分: 当出现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2
小数部分: 当出现.5的时候,如果要取舍的位数前的小树是奇数,则直接舍弃,如果偶数这向上取舍
>>> round(2.635, 2)
2.63
>>> round(2.645, 2)
2.65
>>> round(2.655, 2)
2.65
>>> round(2.665, 2)
2.67
>>> round(2.675, 2)
2.67
2. 高精度使用decimal模块,配合getcontext
默认的context的精度是28位,可以设置为50位甚至更高,都可以。这样在分析复杂的浮点数的时候,可以有更高的自己可以控制的精度。
注意:context里面的这rounding=ROUND_HALF_EVEN 参数。ROUND_HALF_EVEN, 当half的时候,靠近even.
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(17)
>>> c
Decimal('0.058823529411764705882352941176470588235294117647059')
>>> float(c)
0.058823529411764705
3. 使用格式化(不推荐)
>>> a = ("%.2f" % 2.635)
>>> a
'2.63'
>>> a = ("%.2f" % 2.645)
>>> a
'2.65'
>>> a = int(2.5)
>>> a
2
其他. math模块
ceil(x) 大于或者等于x的最小整数。
floor(x) 小于或者等于x的最大整数。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26250550/viewspace-1734125/,如需转载,请注明出处,否则将追究法律责任。