python 小数点精度控制,Python 小数点精度

参考: 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/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值