为什么Python的math.ceil()和math.floor()返回浮点数而不是整数?
9 个回答
20
因为Python的数学库其实是对C语言数学库的一个简单封装,而C语言的数学库返回的是浮点数。
117
正如其他回答所提到的,在Python中返回浮点数(小数)可能是出于历史原因,以避免溢出的问题。不过在Python 3中,它们返回的是整数。
>>> import math
>>> type(math.floor(3.1))
<class 'int'>
>>> type(math.ceil(3.1))
<class 'int'>
你可以在PEP 3141中找到更多信息。
107
浮点数的范围通常比整数的范围要大。通过返回浮点值,函数可以为那些超出整数表示范围的输入值返回一个合理的结果。
想想看:如果 floor()
返回的是一个整数,那么 floor(1.0e30)
应该返回什么呢?
现在,Python 的整数可以表示任意大小,但以前并不是这样。标准库的函数其实就是对相应的 C 语言库函数的简单封装。