【问题标题】:How to suppress the exponential format when using decimal module in Python在 Python 中使用十进制模块时如何抑制指数格式
【发布时间】:2021-04-09 11:15:39
【问题描述】:

我正在编写需要精确到小数点后 108 位的 Python 代码。为此,我使用“十进制”模块。在一些计算中(下面的例子),我得到指数格式的结果。 示例:

from decimal import *
getcontext().prec=100
result1 = Decimal(387) / Decimal(1577917828000)
#results are returned in JSON

结果值为2.452599198340510796231399192987633827532874544592571774909941634806093337326815474702907026157258171E-10 但是,我需要没有 E-10 的正常(浮点?)格式。 有什么建议吗?

【问题讨论】:

  • format(result1, 'f') 就是你所需要的。

标签: python floating-point decimal


【解决方案1】:

你可以试试这个,

from decimal import *
getcontext().prec=100
result1 = Decimal(387) / Decimal(1577917828000)
print('{:f}'.format(result1))

你需要使用这个,

'{:f}'.format(result1)

【讨论】:

  • 我建议在这里去掉最小字段宽度30:没有充分的理由将宽度填充到 30 以获取适合更少数字的结果。 (也许您的意思是 .30f 而不是 30f,但即便如此,仅使用 f 更简单,并且不会冒意外抑制数字的风险。)
  • 是的,你是对的。我要编辑它。感谢您的友好反馈。
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 2010-11-10
  • 2017-02-01
  • 1970-01-01
相关资源
最近更新 更多