将浮点数舍入到最近的整数?
正如标题所暗示的,我想获取一个浮点数并将其舍入到最接近的整数。 但是,如果它不是一个整体,我总是想要舍入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返回。