控制精度/打印指数

时间:2012-10-31 18:36:25

标签: python

在Python中控制64位浮点数打印的最佳方法是什么?

我可以使用%e说明符轻松地以指数格式显示所有数字。但是,如果数字中的数字位数超过x,我只想使用指数格式。例如,下面是原始的64位浮点数,以及我希望它看起来像一个字符串:

value       what's printed

1.123456    1.123456
123456.1234 12345.6e4
1.0         1.0
.1234567    1.23456e-1

上面我只想看到7位数字,然后转换为指数表示法,如果有更多需要。

这有什么意义吗?基本上我希望只有在达到该数字的某个阈值时才能使用指数表示法。我知道%e允许%.3e之类的说明符,但无论数字大小如何,它都将始终使用指数表示法。

2 个答案:

答案 0 :(得分:1)

您可以使用'%g'制作一些内容 - 使用%f%e中较短的内容:

>>> '%.4g'%(1154.2)
'1154'
>>> '%.4g'%(11545.2)
'1.155e+04'
>>> '%.4g'%(1.15452)
'1.155'
>>> '%.4g'%(0.000005321)
'5.321e-06'

换句话说,这将打印出一个带有4位有效数字的数字,并在必要时使用科学记数法。

答案 1 :(得分:1)

我想我可以做类似的事情:

>>> def pretty_float(val):
...   if len(repr(val)) > 7:
...     return '%e' % val
...   else:
...     return repr(val)
...