【5.1】python几种取整的方式(int/round/ceil)

在处理数据的时候,碰到了一个问题,就是取整方式!比如给定一个数值型列表,我需要分别获取它位置为长度的0%,25%,50%,75%,100%处的几个数字。但Python自带的 int 是向下取整,如果数字长度是5,理论上这五个数字分别对应0%,25%,50%,75%,100%的位置,但使用 int ,结果却并不是入次。比如当 5*0.75 时,如果加上 int(5*0.75) ,就等于 3 ,而我想要的应该是4,显然不是我想要的,所以这里需要用到向上取整方式。因此,顺便总结了一下Python的几种取整方式。

一、常见的取整方法

下面介绍几种常用的取整方法,包括:

  • 向下取整
  • 四舍五入
  • 向上取整。

1.1 向下取整

向下取整很简单,直接使用int()函数即可,如下代码(Python 2.7.5 IDLE)

>>> a = 3.75
>>> int(a)
3

1.2 四舍五入

第二种就是对数字进行四舍五入,具体的看下面的代码:

>>> a=3.25;b=3.75
>>> round(a);round(b)
3.0
4.0

1.3 向上取整

但三种,就是向上取整,也就是我这次数据处理中需要的,由于之前没在Python中用到过,所以不太熟悉,其实Python的math中就带了向上取整的函数,即 ceil 方法,专门用于向上取整,实例如下:

>>> import math
>>> math.ceil(3.25)
4.0
>>> math.ceil(3.75)
4.0

二、报错

2.1 报错1

ValueError: invalid literal for int() with base 10

python需要进行int转型的字符串仅仅包含数字,这时候用round(float(“1.0”))

>>> int(1.0)
1
>>> int(‘1.0’)
Traceback (most recent call last):
 File “”, line 1, in 
ValueError: invalid literal for int() with base 10: ‘1.0’
>>> round(float(‘1.0’))
1.0
>>> int(round(float(‘1.0’)))
1
>>>

三、讨论

3.1 python在做除法的时候,需要在第一行加上

from __future__ import division

3.2 浮点数限制小数点位数

>>> a = 1.23456789
>>> b = "%.4f" % a
>>> print b
1.2346

float('%.4f'% a)

参考资料

个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn

Sam avatar
About Sam
专注生物信息 专注转化医学