千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:杭州千锋IT培训  >  技术干货  >  为什么Python中的整除是向下取整?

为什么Python中的整除是向下取整?

来源:千锋教育
发布人:xqq
时间: 2023-10-10 23:31:12

一、为什么Python中的整除是向下取整

这个问题让一些人感到困扰,但其实是有数学考虑的。整除操作(//)与取模操作(%)是一个组合,共同实现一个数学关系(所有变量都是整数):

# a/b = q 余 r# b*q + r = a,其中 0 <= r < b。

当 a 为负数(b 保持正数),我们有两个选择:一个是让 q 向零取整,于是余数 r 会变成负数,即 0 <= abs(r) < b;另一个是让 q 向负无穷取整,则余数的设定保持不变。

数学家们总是倾向于后一种选择。

而在 Python 中,我也选择了后一种方案,因为在实际应用中,存在一些 a 既可能为正数也可能为负数的情况。

以 POSIX 时间戳(1970年以来的秒数)为例,如果我们要获取当前的具体时间,由于每天为 24 * 3600 = 86400 秒,只需直接取模 t % 86400 就可以了。假如时间戳为负数,即在 1970 年之前,那么,为获得正确结果,就只能用向下取整,而不是向零取整。

我能想到的另一个例子是图像点位的计算。而且我很确定,还有许多其它例子。

顺便提一下,如果 b 取负数,整个等式就反过来了:0 >= r > b。

延伸阅读:

二、Python中取整的几种方法小结

1、向下取整

向下取整直接用内建的 int() 函数即可:

>>> a = 3.75

>>> int(a)

2、四舍五入

对数字进行四舍五入用 round() 函数:

>>> round(3.25); round(4.85)

3.0

5.0

3、向上取整

向上取整需要用到 math 模块中的 ceil() 方法:

>>> import math

>>> math.ceil(3.25)

4.0

>>> math.ceil(3.75)

4.0

>>> math.ceil(4.85)

5.0

4、分别取整数部分和小数部分

有时候我们可能需要分别获取整数部分和小数部分,这时可以用 math 模块中的 modf() 方法,该方法返回一个包含小数部分和整数部分的元组:

>>> 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 规范来存储浮点数。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

为什么Python中的整除是向下取整?

2023-10-10

JS延迟加载的方式有哪些?

2023-10-10

数据挖掘与算法是什么关系?

2023-10-10

最新文章NEW

usb安装管理是什么?

2023-10-10

为什么使用原生JS删除、替换DOM节点总是要用到父节点?

2023-10-10

Python中什么叫广度优先?

2023-10-10

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>