如何格式化浮点数而不带尾随零?

分数转换为小数时,通常会在小数点后生成一串数字。小数点后的位数是否仍然很少还不确定。这些数字变得无关紧要,尤其是当它们仅由尾随零组成时。在本文中,我们将深入探讨使用以下每种技术从浮点值中修剪掉尾随零的细微差别。

Python 提供了四种有效的方法来从浮点值中删除尾随零:to_integral() 和 normalize() 函数、str() 和 rstrip() 函数、while 循环以及 float() 函数。这些技术提供了多种方法来清理浮点数并消除不必要的尾随零。

  • 使用to_integral( )normalize( )函数
  • 使用str( ) 和 rstrip( )函数
  • 使用while循环
  • 使用float( )函数

方法 1:利用 to_integral() 和 normalize() 函数

两个工具比一个工具更好,使我们处理尾随零的能力加倍。在这种情况下,当我们尝试组合十进制库中的两个函数以删除给定输入中的尾随零时,情况确实如此。

to_integral ()函数用于检查给定的输入数字是否带有小数部分,而normalize ()函数用于删除尾随零而没有任何雾霾。

首先应该导入十进制库,如下所示。

from decimal import Decimal

然后是时候输入输入,然后定义一个自定义函数来结合 to_integral ( )normalize( )函数的功能,如下所示。

ip = Decimal('1.7670000')
def remove(n):
    return n.quantize(Decimal(1)) if n == n.to_integral() else n.normalize()

最后让我们看一下输出。

组合函数以删除尾随零
输出没有尾随零

方法 2:使用 str() 和 rstrip() 函数修剪零

这有点不传统,因为它涉及将输入数字转换为字符串,然后使用 rstrip ()函数去掉尾随零。这可能看起来不合常规,但它可以有效地完成工作!

我们将从导入十进制库开始,然后声明输入,如下所示。

from decimal import Decimal
ip = Decimal('1.48975480000')

然后使用str( )函数将输入转换为字符串

string = str(ip)

转换后的输出通过rstrip()函数传递,在该函数中应该指定要删除的实体为零,因为默认设置是“空白”。

op = string.rstrip('0')
print ("Truncated output:", Decimal(op))
通过字符串转换删除尾随零
不再有尾随零

方法 3:使用 While 循环

经典的 while 循环对于删除尾随零也非常有用,如下所示。

ip = "314.509837460000000"
print("Input number:", ip)
while (ip[-1] == '0'):
  ip = ip[:-1]
print("Truncated number", ip)
While 循环删除尾随零

该代码的设计目的是,在输入循环通过代码时,每个尾随零都会被一个接一个地删除。

While 循环消除尾随零

方法 4:使用 float() 函数简化

float ()函数将把给定的输入转换为严格的浮点值,没有任何尾随零的空间。这是一种非常简单的技术,可以在给定输入中删除尾随零。

ip = "314.509837460000000"
print("Input number:", ip)
op = float(ip)
print("Truncated number:", op)
用于删除尾随零的浮点函数
删除尾随零

结论:

现在我们已经到了本文的结尾,我们希望本文对可用于从 Python 中的浮点数中删除尾随零的不同技术提供了清晰的解释。这是另一篇文章,详细介绍了如何使用Python 中的to_Excel 和 Styler函数格式化MS Excel的内容。AskPython中还有许多其他有趣且内容丰富的文章  ,可能对那些希望提高 Python 水平的人有很大帮助。为了进一步挑战自己,您能想出其他方法来删除浮点数中的尾随零吗?


参考: