小编典典

为什么 Python 的 math.ceil() 和 math.floor() 操作返回浮点数而不是整数?

all

有人可以解释一下吗(直接来自文档-强调我的):

math.ceil(x) 以 float 形式 返回 x 的上限,即大于或等于 x的最小 整数值。

math.floor(x) 以浮点数形式 返回 x 的下限,即小于或等于 x的最大 整数值。

当根据定义应该计算整数时,为什么要返回.ceil浮点数?.floor


编辑:

好吧,关于为什么它们应该
返回浮点数,这得到了一些很好的论据,当指出它们实际上_确实_ 在 Python 3 中返回整数时,我刚刚习惯了这个想法……

正如其他答案所指出的,在 python 中,它们返回浮点数可能是因为历史原因防止溢出问题。但是,它们在 python 3 中返回整数。

>>> import math
>>> type(math.floor(3.1))
<class 'int'>
>>> type(math.ceil(3.1))
<class 'int'>

阅读 58

收藏
2022-08-01

共1个答案

小编典典

浮点数的范围通常超过整数的范围。通过返回一个浮点值,函数可以为位于整数可表示范围之外的输入值返回一个合理的值。

考虑:如果floor()返回一个整数,应该floor(1.0e30)返回什么?

现在,虽然 Python 的整数现在是任意精度的,但并不总是这样。标准库函数是等效 C 库函数的薄包装。

2022-08-01