Python中取整的几种方法吧。最下方代码为通过学习取整后,自己写的一个实用代码,仅供参考。
1、向下取整
向下取整直接用内建的 int()
函数即可:
1
2
3
|
>>> a
=
3.75
>>>
int
(a)
3
|
2、四舍五入
对数字进行四舍五入用 round()
函数:
1
2
3
|
>>>
round
(
3.25
);
round
(
4.85
)
3.0
5.0
|
3、向上取整
向上取整需要用到 math 模块中的 ceil()
方法:
1
2
3
4
5
6
7
|
>>>
import
math
>>> math.ceil(
3.25
)
4.0
>>> math.ceil(
3.75
)
4.0
>>> math.ceil(
4.85
)
5.0
|
4、分别取整数部分和小数部分
有时候我们可能需要分别获取整数部分和小数部分,这时可以用 math 模块中的 modf()
方法,该方法返回一个包含小数部分和整数部分的元组:
1
2
3
4
5
6
7
|
>>>
import
math
>>> math.modf(
3.25
)
(
0.25
,
3.0
)
>>> math.modf(
3.75
)
(
0.75
,
3.0
)
>>> math.modf(
4.2
)
(
0.20000000000000018
,
4.0
)
|
有人可能会对最后一个输出结果感到诧异,按理说它应该返回 (0.2, 4.0) 才对。这里涉及到了另一个问题,即浮点数在计算机中的表示,在计算机中是无法精确的表示小数的,至少目前的计算机做不到这一点。上例中最后的输出结果只是 0.2 在计算中的近似表示。Python 和 C 一样, 采用 IEEE 754 规范来存储浮点数。
通过上述的学习,附一段自己写的向上和向下取整的代码:
elif 1000 < i <= 500000: logger.info('保值为: ' + str(i)) data = int(insure_list[0]) * 0.005 logger.info('计算保费: ' + str(data)) data_m = list(math.modf(data)) logger.info('校验计算出的保费是不是整数') if len(data_m) > 1: logger.info('说明金额存在小数部分') if data_m[0] >= 0.5: print(data) data_value = math.ceil(data) logger.info('向上取整') else: data_value = int(data) logger.info('小数小于0.5时,向下取整')上述代码仅供参考,愿大神们提出更好的意见和建议!