首页 > 编程知识 正文

python数据类型,向下取整函数符号

时间:2023-05-05 03:48:41 阅读:16109 作者:1999

本系列文章翻译自Python父亲ssdmht van Rossum的系列博客“The History of Python”。 这个博客系列可以帮助我们了解Python及其进化。 经ssdmht同意,这里推荐翻译。 请大家喜欢,多多关照。

系列地址: http://blog.kantli.com/theme/1

1今天又有人问,为什么Python中整数的除法向下舍入,而不像c语言那样用0舍入?

在正整数中,两种整形方法的结果相同,为:

如果5//22之一为负,则结果将无限接近负,而不是接近零:

关于-5/2-3 5//-2-3这个问题,有些人很为难,其实是在数学上考虑的。 整除操作(/) )和模具操作(% )组合在一起,实现一种数学关系。 所有变量都是整数。

# a/b=q馀r即

' # b*q r=a,其中0=r b表示a为负数(b仍为正数),一个是让 q 向零取整,于是余数 r 会变成负数,即 0 = abs(r) b;另一个是让 q 向负无穷取整,则余数的设定保持不变。

数学家们总是喜欢后者的选择。 (请参阅维基https://zh.wikipedia.org/wiki/修改器)

另一方面,在Python上,我也选择了后者的方案。 因为在实际应用中,有些a可以是正的,也可以是负的。

以POSIX时间戳(1970年以后的秒数)为例,要获得当前的具体时间,每天24 * 3600=86400秒,因此只需保留t % 86400即可。 如果时间戳为负数,即早于1970年,则只能通过向下取整数而不是零来获得正确的结果。

另一个可能的例子是图像点的计算。 我确信还有很多其他的例子。

顺便说一下,如果b取负数,则整个等式相反。 0=r b。

2那么,c语言为什么采用整为零呢? 当时的硬件设计为—— 在最早期的硬件中,负数的表现方式是“符号 + 数字”,而不是现在一般采用的补码(至少整数是如此)。

我用的第一台电脑是CDC主机,整数和浮点数都用补数表示,60个1用负0表示。

hxdtk Peters担心我会把这个原则扩展到浮点数。 他可能是正确的,但是如果x是一个非常小的负数,那么取整原则以下将失去x % 1.0的精度。 但是,这个问题不影响我让整数采取下取原则。

PS .请注意我使用的符号是/而不是/。 这是Python 3的语法,也可以在Python 2中使用。 这表示用户明确使用整除而不是除法。 Python 2的/操作可能存在歧义。 这是因为如果两个参数都是整数,则只返回整数;如果有浮点数参数,则返回浮点数。 但是,这是另一回事。 请参考PEP 238。

公众号:ReadingPython

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。