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

我想取一个浮点数然后四舍五入得到最接近的整数。但是,如果它不是一个整数,我 一直都是想四舍五入的变量,不管它是多么接近下一个整数。有办法吗?

394909 次浏览

我认为你需要一个楼层功能:

数学楼(x)

其中之一应该会奏效:

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

很简单

int(x)

也会起作用。

这可能很简单,但是你不能把它四舍五入然后减去1吗? 例如:

number=1.5
round(number)-1
> 1

如果不想导入数学,可以使用:

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) ,它会去掉所有的小数位。不需要使用 round (x)。

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

round(x-0.5)

对负数也有效。

很多人说要使用 int(x),这在大多数情况下都是可行的,但是有一个小问题。如果 OP 的结果是:

x = 1.9999999999999999

它会转向

x = 2

过了16世纪九十年代,它就会回合。如果你确信自己永远不会遇到这样的事情,那么这没什么大不了的。但是你要记住这一点。

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

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模块。

x//1

//操作员返回该部门的楼层。因为除以1并不会改变你的数字,这等同于地板,但不需要进口。 备注:

  1. 这将返回一个浮点数
  2. 转向 -∞

我用了这个代码,从数字中减去0.5,当你四舍五入的时候,它就是原始的四舍五入的数字。

圆(a-0.5)

只要四舍五入(x-0.5) ,就会返回 Float 的下一个四舍五入的整数值。你也可以通过 do round (x + 0.5)轻松地四舍五入