phe*_*eon 7 python math floating-point
如果x是2.3,则math.floor(x)返回2.0小于或等于的最大整数x(作为浮点数.)
如何获得严格小于(作为整数)i的最大整数?x
我想出的最好的是:
i = int(math.ceil(x)-1)
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
需要注意的是,如果x是2.0那么math.floor(x)的回报2.0,但我需要的最大整数小于2.0,这是1.
math.ceil(x)-1 是正确的,这是证明。
如果x在Z(整数集)中,则math.ceil(x)= x。因此math.ceil(x)-1= x-1,小于 的最大整数x。
否则,我们x在[R \ Z ^和math.ceil(x)是最小的整数y这样x?y. 但是y-1,一个整数是否小于最小整数,使得x? y,因此x>y-1并且通过构造y-1是小于 的最大这样的整数x。
这很简单,我不会打扰那些if- else。但是为了避免浮点数的计算错误,我会-1在int转换之外进行。
int(math.ceil(x))-1
Run Code Online (Sandbox Code Playgroud)