我想取一个浮点数并将其向下舍入到最接近的整数。但是,如果它不是一个整体,我总是想对变量进行四舍五入,无论它与下一个整数有多接近。有没有办法做到这一点?
问问题
382007 次
12 回答
199
简单的
print int(x)
也会起作用。
于 2013-06-17T07:51:30.967 回答
82
其中之一应该工作:
import math
math.trunc(1.5)
> 1
math.trunc(-1.5)
> -1
math.floor(1.5)
> 1
math.floor(-1.5)
> -2
于 2013-06-17T07:05:17.460 回答
51
x//1
操作员返回部门的//
楼层。由于除以 1 不会改变你的数字,这相当于 floor 但不需要导入。笔记:
- 这将返回一个浮点数
- 这向 -∞ 取整</li>
于 2017-11-11T04:13:54.560 回答
34
要获得浮点结果,只需使用:
round(x-0.5)
它也适用于负数。
于 2015-04-15T13:22:37.743 回答
31
我认为您需要一个楼层功能:
于 2013-06-17T07:04:19.417 回答
9
很多人说要使用int(x)
,这在大多数情况下都可以,但是有一个小问题。如果 OP 的结果是:
x = 1.9999999999999999
它会四舍五入
x = 2
16 号 9 号之后,它会圆整。如果你确定你永远不会遇到这样的事情,这没什么大不了的。但这是要记住的事情。
于 2015-07-02T22:15:41.067 回答
6
如果您不想导入数学,可以使用:
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.
于 2014-05-29T22:12:10.153 回答
3
如果您使用 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
。
于 2016-06-22T21:34:37.763 回答
3
只需进行 round(x-0.5) 这将始终返回浮点的下一个向下舍入的整数值。您也可以通过 do round(x+0.5) 轻松四舍五入
于 2018-11-20T17:05:59.440 回答
1
不知道你是否解决了这个问题,但我偶然发现了这个问题。如果你想去掉小数点,你可以使用 int(x) 它将消除所有小数位。无需使用round(x)。
于 2014-11-28T07:20:53.580 回答
-2
这可能很简单,但你不能把它四舍五入然后减去 1 吗?例如:
number=1.5
round(number)-1
> 1
于 2014-05-16T17:41:26.250 回答
-5
我用这个代码从数字中减去 0.5,当你四舍五入时,它是向下舍入的原始数字。
圆形(a-0.5)
于 2018-10-25T03:50:52.710 回答