【5.1】python几种取整的方式

在处理数据的时候,碰到了一个问题,就是取整方式!比如给定一个数值型列表,我需要分别获取它位置为长度的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)向下取整

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

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

(2)四舍五入

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

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

(3)向上取整

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

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

注:

问题一:

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

    from __future__ import division

问题二:

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
    >>>

问题三:浮点数限制小数点位数

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

    float('%.4f'% a)

参考资料:

http://www.csuldw.com/2015/12/04/2015-12-04-Python-Round/

http://www.moiblog.net/2013/valueerror-invalid-literal-int-base-10/

个人公众号,比较懒,很少更新,可以在上面提问题:

更多精彩,请移步公众号阅读:

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