在浮动的地板

Ran*_*lue 39 python math floor python-3.x

我在Python中找到了两种获取底线的方法:

3.1415 // 1
Run Code Online (Sandbox Code Playgroud)

import math
math.floor(3.1415)
Run Code Online (Sandbox Code Playgroud)

第一种方法的问题是它返回一个浮点(即3.0).第二种方法感觉笨拙而且太长.

是否有替代解决方案用于在Python中获取地板?

Sve*_*ach 61

只要您的数字是正数,您就可以简单地转换为int向下舍入到下一个整数:

>>> int(3.1415)
3
Run Code Online (Sandbox Code Playgroud)

但是对于负整数,这将会四舍五入.


Mat*_*ock 13

你可以在浮点上调用int()来强制转换到较低的int(不是很明显是地板但更优雅)

int(3.745)  #3
Run Code Online (Sandbox Code Playgroud)

或者在楼层结果上调用int.

from math import floor

f1 = 3.1415
f2 = 3.7415

print floor(f1)       # 3.0
print int(floor(f1))  # 3
print int(f1)         # 3
print int(f2)         # 3 (some people may expect 4 here)
print int(floor(f2))  # 3
Run Code Online (Sandbox Code Playgroud)

http://docs.python.org/library/functions.html#int

  • OP正在使用Python 3.x,这在帖子中并不明显.在Python 3.x中,`math.floor()`返回一个`int`,因此没有必要转换返回值. (3认同)

Mar*_*som 6

第二种方法是要走的路,但有一种方法可以缩短它.

from math import floor
floor(3.1415)
Run Code Online (Sandbox Code Playgroud)

  • `floor()`在python3中返回一个整数,但是在python2中它返回float. (2认同)

cam*_*ilk 5

请注意,取整并转换为 int 与负数不同。如果您确实希望将下限设置为整数,则应在调用 math.floor() 后将其转换为 int。

>>> int(-0.5)
0
>>> math.floor(-0.5)
-1.0
>>> int(math.floor(-0.5))
-1
Run Code Online (Sandbox Code Playgroud)