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