在 Python 中从小数中删除尾随零

在 Python 中从小数中删除尾随零

Remove trailing zeros from decimal in Python

要从小数中删除尾随零:

  1. 使用decimal.to_integral()方法检查数字是否有小数部分。
  2. 如果是,则将数字四舍五入并返回。
  3. 如果没有,请使用该decimal.normalize()方法去除任何尾随零。
主程序
from decimal import Decimal num = Decimal('1.230000') # ✅ drop trailing zeros from decimal, using normalize() def remove_exponent(d): return d.quantize(Decimal(1)) if d == d.to_integral() else d.normalize() print(remove_exponent(num)) # 👉️ 1.23 # -------------------------------- # ✅ drop trailing zeros from decimal, using str.rstrip() num_2 = Decimal('1.230000') string = str(num_2) without_trailing_zeros = string.rstrip( '0').rstrip('.') if '.' in string else string result = Decimal(without_trailing_zeros) print(result) # 👉️ 1.23

第一个函数取自官方文档的
Decimal FAQ
部分。

to_integral
方法

入到最接近的整数。

主程序
from decimal import Decimal # 👇️ True print(Decimal('1.0000') == Decimal('1.0000').to_integral()) # 👇️ False print(Decimal('1.9000') == Decimal('1.9000').to_integral()) print(Decimal('1.0000').to_integral()) # 👉️ 1

如果数字没有小数部分,我们使用quantize()方法四舍五入到固定的小数位数。

如果数字有小数部分,我们使用
Decimal.normalize
方法去除最右边的尾随零。

主程序
from decimal import Decimal print(Decimal('1.230000').normalize()) # 👉️ 1.23 print(Decimal('3.456000000').normalize()) # 👉️ 3.456

我们只normalize()在数字有小数部分时才使用该方法,因为它可以删除小数点左侧的零。

主程序
from decimal import Decimal print(Decimal('500.000').normalize()) # 👉️ 5E+2 print(Decimal('510.100').normalize()) # 👉️ 510.1

或者,您可以使用该str.rstrip()方法。

要从小数中删除尾随零:

  1. 使用str()该类将小数转换为字符串。
  2. str.rstrip()如果数字有小数点,则使用该方法去除尾随零。
主程序
from decimal import Decimal num = Decimal('1.230000') string = str(num) without_trailing_zeros = string.rstrip( '0').rstrip('.') if '.' in string else string result = Decimal(without_trailing_zeros) print(result) # 👉️ 1.23

第一步是将小数转换为字符串。

str.rstrip方法返回删除
了提供的尾随字符的字符串副本。

.我们首先去除尾随零,然后如果小数部分仅由尾随零组成,则尝试去除点。

该示例还检查字符串是否包含点,因此我们不会尝试从没有小数部分的数字中去除尾随零,例如5000
to
5

发表评论