如何在Python中四舍五入到整数?——CDA数据分析师

当我们的Python程序使用数值时,我们常常会将带有小数部分的数值转换成整数(整数)。但是怎么做呢?Python有什么选择?让我们一起找出答案。
在这篇文章中:

在Python中上下舍入数值
上下舍入值:Python的round()函数
示例:将Python数字四舍五入到最接近的完整整数
向下舍入到下一个整数:Python的math.floor()函数
示例:将值四舍五入到下一个完整整数
舍入到下一个整数:Python的math.ceil()函数
示例:将Python值四舍五入为整数
四舍五入Python列表或数组中的所有值
使用列表理解来取整Python值
用Python的for循环四舍五入所有值
概要
#在Python中向上和向下舍入数值
在对值进行四舍五入时,我们将从带小数位的数值变为整数。在此过程中,我们的确损失了一些精度,但是舍入后的值通常更易于阅读和解释。

Python有三种将浮点值转换为整数(整数)的方法:

内置round()函数将值向上和向下取整。
该math.floor()功能舍下来到下一个完整的整数。
该math.ceil()功能舍入了下一个完整的整数。
如果您只想输出带有整数的字符串或脚本,那么Python格式的字符串也可以执行该任务。这样,您也不会失去原始值的精度。

让我们看看这三种方法是如何工作的。

#上下舍入值:Python的round()功能
为了向上和向下舍入浮点值,我们使用了Python的round()函数(Lutz,2013; Python Docs,nd a)。有两种使用此功能的方法。第一种选择是将值四舍五入到一定的小数位数。另一个选项将浮点值转换为整数。

要做到这一点,我们round()用一个参数调用:将值变成整数。例如:

round(5.4598)

Returns: 5

复制代码
该round()函数将的值取.5整为偶数整数(Python Docs,nd a)。因此.5,向上取整为正值,向下取整为负值。

例如,round(0.5)and和round(-0.5)return 0,而round(1.5)Give2和round(-1.5)Give -2。这种Python行为与通常的舍入方式有些不同。

当我们给出round()一个整数时,该函数仅返回该整数。在这种情况下没有错误,因此我们不必检查函数的参数是否具有小数值。不过确实需要一个数字;不允许使用字符串值round()。

#示例:将Python数字四舍五入到最接近的整数
要查看该round()函数在实际中的工作方式,请考虑以下微型程序:

Some numbers to round

valueA = 3.14159265359
valueB = 1845.7409947
valueC = -100.95
valueD = 9.5432
valueE = 34.49953

Round values to whole numbers

roundA = round(valueA)
roundB = round(valueB)
roundC = round(valueC)
roundD = round(valueD)
roundE = round(valueE)

Output rounded values

print(“Value:”.ljust(15), “Rounded:”)

print(str(valueA).ljust(15), roundA)
print(str(valueB).ljust(15), roundB)
print(str(valueC).ljust(15), roundC)
print(str(valueD).ljust(15), roundD)
print(str(valueE).ljust(15), roundE)
复制代码

在这里,我们首先使用浮点值制作五个变量。一些有很多小数位,而其他只有几个。

然后我们进行一些舍入。为此,我们调用round()函数并提供一个参数:要取整的值。我们存储在变量四舍五入整数roundA通过roundE。

接下来,我们使用print()函数输出结果。对于每个变量,我们显示原始值(例如valueA)及其四舍五入的结果(roundA)。使用ljust()字符串方法,我们将第一个值向左对齐。这将更漂亮的输出的值对齐。

舍入后的值如下所示:

Value: Rounded:
3.14159265359 3
1845.7409947 1846
-100.95 -101
9.55432 10
34.49953 34
复制代码
#向下舍入到下一个整数:Python的math.floor()函数
该math.floor()函数返回其参数的下限值,该值是小于或等于该参数值的最接近整数(Python Docs,nd b)。

这听起来很抽象,但这只是将其math.floor()舍入到下一个整数的另一种方式。因此7.8变得7和5.4变成5。而且,由于该功能舍下来,以较小的值,-8.2变成-9。

这是该math.floor()函数的简单示例:

import math

math.floor(12.75)

Returns: 12

复制代码
math.floor()仅接受一个参数:要四舍五入的值。使用小的自定义函数,我们还可以舍入到小数位数。有关更多信息,请参见四舍五入到特定的小数位数。
#示例:将值向下舍入到下一个完整整数
为了探索该math.floor()函数在实际中的工作方式,让我们研究以下Python程序:

import math

Some random values

valueA = 11.2829850
valueB = 19.2545879
valueC = 0.50000001
valueD = 34.6403001
valueE = -9.9121138

Round values down to the nearest full integer

roundA = math.floor(valueA)
roundB = math.floor(valueB)
roundC = math.floor(valueC)
roundD = math.floor(valueD)
roundE = math.floor(valueE)

Print the results

print(valueA, “rounded =”, roundA)
print(valueB, “rounded =”, roundB)
print(valueC, “rounded =”, roundC)
print(valueD, “rounded =”, roundD)
print(valueE, “rounded =”, roundE)
复制代码
我们首先导入math模块。这样就可以使用该math.floor()功能。然后,valueA通过创建五个变量valueE。每个都有一个浮点值。

接下来,我们将这些值四舍五入。为此,我们math.floor()在每个变量上调用该函数。我们将结果存储在新变量中(roundA通过roundE)。

程序的第三部分使用Pythonprint()函数输出变量。在这里,每个print()语句都显示原始值及其四舍五入的版本。看起来是这样的:

11.282985 rounded = 11
19.2545879 rounded = 19
0.50000001 rounded = 0
34.6403001 rounded = 34
-9.9121138 rounded = -10
复制代码
#舍入到下一个整数:Python的math.ceil()函数
该math.ceil()函数返回其参数的上限,该上限是大于或等于该参数值的最接近整数(Python Docs,nd b)。

这只是一种说法,说的方式math.ceil()发到一个整数:3.2成为4与7.75被变成8。而且由于功能舍了一个更大的价值,-9.8变成-9。

这是一个简单的例子math.ceil():

import math

math.ceil(12.45)

Returns: 13

复制代码
这里有一个方法来记住的区别math.floor()和math.ceil()。如您所知,每个浮点值位于两个连续的整数之间。12.45例如,介于12和之间13。

现在,“上限”是此间隔的较高端点。因此math.ceil()返回13。该整数间隔的较低起始点称为“地板”。因此math.floor()返回12。

Python的math.ceil()函数总是四舍五入为一个整数。但是,通过一个小的自定义函数,我们还可以舍入到小数位数。查看如何将Python值四舍五入到小数位。

#示例:将Python值四舍五入为整数
让我们看看如何math.ceil()在实践中。此示例程序将几个浮点值四舍五入为整数:

import math

Some random values

valueA = 11.2829850
valueB = 19.2545879
valueC = 0.50000001
valueD = 34.6403001
valueE = -9.9121138

Round values up to the nearest full integer

roundA = math.ceil(valueA)
roundB = math.ceil(valueB)
roundC = math.ceil(valueC)
roundD = math.ceil(valueD)
roundE = math.ceil(valueE)

Output the results

print(valueA, “rounded =”, roundA)
print(valueB, “rounded =”, roundB)
print(valueC, “rounded =”, roundC)
print(valueD, “rounded =”, roundD)
print(valueE, “rounded =”, roundE)
复制代码
我们首先导入math模块。这使math.ceil()功能可用。然后,我们让五个不同的变量,命名为valueA通过valueE。每个都有一个带几个小数位的数字。

下一部分将这些值四舍五入为一个整数。为此,我们math.ceil()在每个变量上调用该函数。我们把价值回报在新的变量函数,roundA通过roundE。

第三代码段具有print()输出原始值和舍入值的功能。显示的内容如下:

11.282985 rounded = 12
19.2545879 rounded = 20
0.50000001 rounded = 1
34.6403001 rounded = 35
-9.9121138 rounded = -9
复制代码

#舍入Python列表或数组中的所有值
当然,在某些情况下,我们需要舍入一堆值,而不是一个值。有两种主要方法:使用列表理解或for循环。让我们来看看。

#使用列表理解来舍入Python值
当我们有一系列浮点值时,对它们进行舍入的一种方法是使用列表理解。只需少量代码即可高效运行。

这是一个迷你程序,它可以执行以下操作:

import math

Some random values

values = [
3.46410162, 6.70820393, 11.04536102,
15.29705854, 21.21320344, 31.4960315
]

Generate new lists with values rounded

valuesRounded = [round(number) for number in values]
valuesRoundUp = [math.ceil(number) for number in values]
valuesRoundDown = [math.floor(number) for number in values]

Output data

print(“Original values:\n”, values)
print(“Rounded:\n”, valuesRounded)
print(“Rounded up to next integer:\n”, valuesRoundUp)
print(“Rounded down to next integer:\n”, valuesRoundDown)
复制代码

首先,我们导入math模块。这样就可以使用math.ceil()和math.floor()舍入功能。然后,我们创建一个名为的列表values,其中包含多个浮点值。

为了将这些值四舍五入为整数,我们进行了三个列表推导。第一个round()针对每个列表值执行。其他两个在列表值上执行math.ceil()和math.floor()函数。

我们通过串联for循环生成这些函数使用的值for number in values。这一次从values列表中获取一个值,并通过number变量使其可用。

这些列表理解会生成新列表。我们分配这些到valuesRounded,valuesRoundUp和valuesRoundDown变量。

程序的最后部分输出原始列表和三个舍入的列表。看起来是这样的:

Original values:
[3.46410162, 6.70820393, 11.04536102, 15.29705854, 21.21320344, 31.4960315]
Rounded:
[3, 7, 11, 15, 21, 31]
Rounded up to next integer:
[4, 7, 12, 16, 22, 32]
Rounded down to next integer:
[3, 6, 11, 15, 21, 31]
复制代码

在上面的示例中,我们保留了原始列表。如果您不需要保留这些值,则还可以使用舍入值覆盖原始列表。这是列表理解的方式:

Round all numbers in the ‘values’ list,

in place (to replace the original numbers)

values = [round(value) for value in values]
复制代码

#用Python的for循环四舍五入所有值
当然,我们也可以使用常规for循环对列表或数组值进行取整。这比列表理解需要更多的代码,但是使在每个元素上执行附加操作更加容易。另外for,在复杂情况下,循环更易于阅读。

以下是Python程序在for循环内舍入值的方式:

import math

Some random values

values = [
3.46410162, 6.70820393, 11.04536102,
15.29705854, 21.21320344, 31.4960315
]

Create the new lists

valuesRounded = []
valuesRoundUp = []
valuesRoundDown = []

Populate new lists with rounded values

for number in values:
valuesRounded.append(round(number))
valuesRoundUp.append(math.ceil(number))
valuesRoundDown.append(math.floor(number))

Output data

print(“Original values:\n”, values)
print(“Rounded (standard):\n”, valuesRounded)
print(“Rounded up to next integer:\n”, valuesRoundUp)
print(“Rounded down to next integer:\n”, valuesRoundDown)
复制代码

我们再次首先导入math可以使用math.ceil()和的模块math.floor()。然后,我们创建一个values带有浮点值的列表()。

然后,我们提出三点最初是空的列表:valuesRounded,valuesRoundUp,和valuesRoundDown。这些将保留我们的四舍五入值。

为了填充这些列表,我们进行了Pythonfor循环。此循环遍历values列表中的所有元素。在每个循环周期中,number变量将保留该列表中的单个元素。

在循环内部,我们append()在三个新列表的每一个上调用该方法。这样,我们可以向它们添加新元素。我们通过循环添加的每个道次的值是number与圆形的可变round(),math.ceil()和math.floor()。完成此循环后,这三个列表中的每个列表均具有原始列表中的四舍五入值。

该程序以几个print()语句结束。显示原始列表及其四舍五入的衍生物。输出内容如下所示:

Original values:
[3.46410162, 6.70820393, 11.04536102, 15.29705854, 21.21320344, 31.4960315]
Rounded (standard):
[3, 7, 11, 15, 21, 31]
Rounded up to next integer:
[4, 7, 12, 16, 22, 32]
Rounded down to next integer:
[3, 6, 11, 15, 21, 31]
复制代码

顺便说一下,四舍五入值时不必创建新列表。如果可以丢失原始数据,也可以覆盖现有列表。将for循环与enumerate()函数结合使用时,这样做很容易:

Loop through the original ‘values’ list, and

round the numbers (in place)

for index, value in enumerate(values):
values[index] = round(value)
复制代码
#总结
Python提供了三种将浮点值四舍五入为整数的方法。该round()函数将值向上或向下取整。十进制数字的.5Python取整为偶数整数。这使其正值取整,负值取整。

math.floor()另一方面,该函数始终舍入到最接近的整数。math.ceil()相反。该函数总是四舍五入为整数。

这三个函数都以相同的方式工作:为函数提供一个参数,即要舍入的浮点值。