Python K位小数

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,也允许我们在类似数组的对象中四舍五入十进制数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程