Gre*_*ill 97
浮点数的范围通常超出整数范围.通过返回浮点值,函数可以为位于可表示的整数范围之外的输入值返回合理值.
考虑一下:如果floor()返回一个整数,应该floor(1.0e30)返回什么?
现在,虽然Python的整数现在是任意精度,但并不总是这样.标准库函数是等效C库函数周围的瘦包装器.
jco*_*ado 93
正如其他答案所指出的,在python中,他们返回浮点数可能是因为历史原因可以防止溢出问题.但是,它们在python 3中返回整数.
>>> import math
>>> type(math.floor(3.1))
<class 'int'>
>>> type(math.ceil(3.1))
<class 'int'>
Run Code Online (Sandbox Code Playgroud)
您可以在PEP 3141中找到更多信息.
Ste*_*non 16
您的评论中可以看出您混淆的根源:
ceil/floor操作的重点是将浮点数转换为整数!
ceil和floor操作的要点是将浮点数据舍入为整数值.不要进行类型转换.需要获取整数值的用户可以在操作后进行显式转换.
请注意,如果所有可用的都是返回整数的ceil或float操作,则不可能像往常一样实现舍入到整数值.您需要首先检查输入是否在可表示的整数范围内,然后调用该函数; 您需要在单独的代码路径中处理NaN和无穷大.
此外,如果要符合IEEE 754,则必须具有返回浮点数的ceil和floor版本.
在Python 2.4之前,整数不能保存截断实数的全部范围.
http://docs.python.org/whatsnew/2.4.html#pep-237-unifying-long-integers-and-integers
| 归档时间: |
|
| 查看次数: |
97364 次 |
| 最近记录: |