2

我正在寻找一种采用 decimal.Decimal 对象x并返回 string的方法s,例如:

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

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

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

4

1 回答 1

1

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

'{:f}'.format(abs(n) if n.is_zero() else n)
于 2013-08-18T11:49:42.980 回答