如何找到小于x的最大整数?

phe*_*eon 7 python math floating-point

如果x2.3,则math.floor(x)返回2.0小于或等于的最大整数x(作为浮点数.)

如何获得严格小于(作为整数)i的最大整数?x

我想出的最好的是:

i = int(math.ceil(x)-1)
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

需要注意的是,如果x2.0那么math.floor(x)的回报2.0,但我需要的最大整数小于2.0,这是1.

Lær*_*rne 5

math.ceil(x)-1 是正确的,这是证明。

如果xZ(整数集)中,则math.ceil(x)= x。因此math.ceil(x)-1= x-1,小于 的最大整数x

否则,我们x[R \ Z ^math.ceil(x)是最小的整数y这样xy. 但是y-1,一个整数是否小于最小整数,使得x? y,因此x>y-1并且通过构造y-1是小于 的最大这样的整数x

这很简单,我不会打扰那些if- else。但是为了避免浮点数的计算错误,我会-1int转换之外进行。

int(math.ceil(x))-1
Run Code Online (Sandbox Code Playgroud)