Python K位小数
在计算机科学中,我们将小数定义为使用基于10的表示法的数字。例如12,4,5.7,99都是小数,因为它们使用了基于10的表示法。我们可以将小数的长度定义为小数中存在的数字的数量。更确切地说,小数中存在的有效数字的数量包括小数点之前和之后的数字。本文将探讨几种方法来找到k位小数的方法,如round方法、字符串格式化、全局精度等。
使用round方法
控制小数位数精度的一个简单方法是使用round方法。这是Python的一个内置方法。它接受两个参数:我们需要四舍五入的数字以及我们需要四舍五入的小数位数。
语法
round(number, k)
这里的数字是十进制数字,k是我们需要舍入的小数位数。返回一个带有所需舍入值的十进制数。请注意,舍入将遵循数学的传统规则。
示例
在下面的代码中,我们创建了一个名为round_off的函数,它接受十进制数和k(小数位数)。在函数下面,我们使用了Python的round方法,将数字和k作为参数传递。我们将结果存储在变量rounded中,并返回它。我们使用一个数字进行测试,并调用函数,传递必要的参数。我们使用字符串格式化打印结果。请注意,这里我们舍入到了3位小数。
def round_off(number, k):
rounded = round(number, k)
return rounded
k=3
number= 3.141592653589793
print(f"The number {number} round off to {k} decimal places is: {round_off(number, k)}")
输出
The number 3.141592653589793 round off to 3 decimal places is: 3.142
使用字符串格式化
在前面的例子中,我们看到了如何使用round方法来四舍五入。round方法遵循数学计算的传统规则。然而,我们可能需要以稍微不同的方式进行四舍五入。我们可能需要截断数字而不是四舍五入。使用字符串格式化是执行这个操作的绝佳方式。
语法
"%.nf" % number
这里 n 是我们需要格式化小数位数的数目。 “number” 是十进制数。其余是我们需要遵循的语法。
示例
在下面的示例中,我们使用了字符串格式化方法来四舍五入十进制数。我们定义了 round_off 方法,该方法接受十进制数和 k 作为参数。它是一个非空方法,并返回格式化的字符串。我们使用了 Python 中的字符串格式化符号来格式化字符串。
def round_off(number, k):
formatted = f"%.{k}f" % number
return formatted
k=5
number= 7.7486492653
print(f"The number {number} round off to {k} decimal places is : {round_off(number, k)}")
输出
The number 7.7486492653 round off to 5 decimal places is : 7.74865
设置全局精度
默认情况下,在二进制格式中处理十进制数有一些差异。例如,如果你尝试运行以下命令:
print(1.1+2.2)
你会得到3.3000000000000003而不是3.3。这不是Python的bug,而是由操作系统处理二进制表示的方式造成的。然而,我们需要控制小数精度,以便达到良好的准确性,即使是非常小的数字也非常重要。十进制库可以帮助我们解决这个问题。它提供了一个名为getcontext()的方法来解决这个问题。我们可以在全局级别设置十进制数的精度。
示例
from decimal import Decimal, getcontext
print(1.1+2.2)
getcontext().prec=16
print(Decimal(1.1)+Decimal(2.2))
输出
3.3000000000000003
3.300000000000000
使用Numpy库
Numpy是Python中进行数值计算的流行库。该库处理的是数组对象,它们类似于列表,唯一的区别是它们只能包含同质的数据类型。该库还提供了一个名为around的方法,它接收一组数字数组,并将其截断为指定的小数位数。
示例
在下面的代码中,我们首先导入了Numpy库。然后,我们定义了一个名为round_off的函数,它接收参数k和**kwargs(可变参数)。接下来,我们使用list方法将kwargs的所有值转换为列表数据类型。我们使用around方法找到列表中数字的舍入的十进制数。我们将列表和小数位数作为参数传递给函数。最后,我们返回结果。
import numpy as np
def round_off(k, **kwargs):
numbers = list(kwargs.values())
rounded = np.around(numbers, decimals=k)
return rounded
k = 5
numbers = {'num1': 7.7486492653, 'num2': 5.634534534, 'num3': 64.345345345}
rounded_numbers = round_off(k, **numbers)
print(f"The numbers {numbers} rounded off to {k} decimal places are: {rounded_numbers}")
输出
The numbers {'num1': 7.7486492653, 'num2': 5.634534534, 'num3': 64.345345345} rounded off to 5 decimal places are: [ 7.74865 5.63453 64.34535]
结论
在本文中,我们了解了如何使用Python中的几种方法来找到k−长度的小数位。我们使用了round方法,这是非常方便的。接下来,我们使用了字符串格式化方法,这对于截断而不是四舍五入十进制数非常有用。decimal库帮助减少了十进制数表示中的某些不一致性。另一方面,其他一些库,如Numpy,也允许我们在类似数组的对象中四舍五入十进制数。