将浮点数舍入到最近的整数?

正如标题所暗示的,我想获取一个浮点数并将其舍入到最接近的整数。 但是,如果它不是一个整体,我总是想要舍入variables,不pipe它与下一个整数有多接近。 有没有办法做到这一点?

简单

print int(x) 

也会工作。

其中之一应该工作:

 import math math.trunc(1.5) > 1 math.trunc(-1.5) > -1 math.floor(1.5) > 1 math.floor(-1.5) > -2 

我认为你需要一个场地的function:

math.floor(x)的

要获得浮点结果,只需使用:

 round(x-0.5) 

它也适用于负数。

如果你不想导入math,你可以使用:

int(round(x))

这是一个文件:

 >>> help(round) Help on built-in function round in module __builtin__: round(...) round(number[, ndigits]) -> floating point number Round a number to a given precision in decimal digits (default 0 digits). This always returns a floating point number. Precision may be negative. 

很多人都说使用:

  int(x) 

这在大多数情况下工作正常,但有一个小问题。 如果OP的结果是:

  x = 1.9999999999999999 

它会轮到

  x = 2 

十六号后九号将轮到。 如果你确定你永远不会遇到这样的事情,这不是什么大不了的事情。 但是要记住这一点。

这可能很简单,但是你不能只是把它减一,然后减1? 例如:

 number=1.5 round(number)-1 > 1 

如果你使用numpy,你可以使用下面的解决scheme,它也适用于负数(它也适用于数组)

 import numpy as np def round_down(num): if num < 0: return -np.ceil(abs(num)) else: return np.int32(num) round_down = np.vectorize(round_down) 

 round_down([-1.1, -1.5, -1.6, 0, 1.1, 1.5, 1.6]) > array([-2., -2., -2., 0., 1., 1., 1.]) 

我认为这也将工作,如果你只是使用math模块,而不是numpy模块。

不知道你是否解决了这个问题,但我只是偶然发现了这个问题。 如果你想摆脱小数点,你可以使用int(x),它会消除所有的十进制数字。 Theres不需要使用round(x)。

 x//1 

//操作符返回分区的楼层。 由于除以1不会改变您的号码,这相当于楼层,但不需要import。 你不会得到int返回。