Python - K 位小数
在计算机科学中,我们将十进制数定义为使用基数 10 表示法的数字。例如 12、4、5.7、99 是十进制数,因为它们使用基数 10 表示法。我们可以将十进制数的长度定义为十进制数中存在的数字个数。更准确地说,十进制数中存在的有效数字包括小数部分前后两个数字。本文将探讨几种查找 k 位小数的方法,例如 round 方法、字符串格式化、全局精度等。
使用 round 方法
控制小数位精度最简单的方法之一是使用 round 方法。这是 Python 的内置方法。它接受两个参数:我们需要四舍五入的数字以及我们需要四舍五入的小数位数。
语法
round(number, k)
这里 number 是十进制数,k 是我们需要对数字进行四舍五入的小数位。它返回一个具有所需四舍五入的十进制数。请注意,四舍五入将遵循传统的数学规则。
示例
在以下代码中,我们创建了一个名为 round_off 的函数,它接受十进制数和 k(小数位数)作为参数。在函数下,我们使用了 Python 的 round 方法,其中我们将 number 和 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 的错误,而是由于操作系统如何处理二进制表示。但是,我们需要将十进制数的精度控制到良好的精度,即使是非常小的数字也非常重要。decimal 库可以帮助我们解决这种情况。它为我们提供了一种解决此问题的方法,称为 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 的所有值转换为 list 数据类型。我们使用 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 中使用 Python 中提供的几种方法来查找 k 位小数。我们使用了 round 方法,它非常方便使用。接下来,我们使用了字符串格式化方法,它对于截断而不是四舍五入十进制数很有用。decimal 库有助于减少十进制数表示中的一些不一致性。另一方面,其他一些库(如 Numpy)也允许我们对数组状对象中的十进制数进行四舍五入。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP