Skip to main content
 首页 » 编程设计

python之将 python 十进制格式化为 [-.0-9]*,没有尾随零,保值

2025年05月04日9lyj

我正在寻找一种采用 decimal.Decimal 对象 x 并返回字符串 s 的方法,这样:

  • x == Decimal(s)
  • re.match("^-?(0|[1-9][0-9]*)(.[0-9]*[1-9])?$", s) 是不是无
  • s != '-0'

换句话说,该方法不会改变 Decimal 对象的值;它返回一个字符串表示形式,该表示形式从不采用科学计数法(例如 1e80),并且从不包含任何尾随零。

我假设有一个标准库函数可以让我这样做,但我还没有找到。你知道吗?

请您参考如下方法:

n.normalize() 截断精度超过 28 位的小数,但您可以使用字符串格式和手动检查负零:

'{:f}'.format(abs(n) if n.is_zero() else n)