在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
之类的说明符,但无论数字大小如何,它都将始终使用指数表示法。
答案 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)
...