【5.1】python几种取整的方式(int/round/ceil)
在处理数据的时候,碰到了一个问题,就是取整方式!比如给定一个数值型列表,我需要分别获取它位置为长度的0%,25%,50%,75%,100%处的几个数字。但Python自带的 int 是向下取整,如果数字长度是5,理论上这五个数字分别对应0%,25%,50%,75%,100%的位置,但使用 int ,结果却并不是入次。比如当 50.75 时,如果加上 int(50.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
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn