Ian*_*ker 5 python scientific-notation exponent
在 Python 中,科学记数法总是给我 2 位数的指数:
print('%17.8E\n' % 0.0665745511651039)
6.65745512E-02
Run Code Online (Sandbox Code Playgroud)
但是,我非常希望有 3 个数字,例如:
6.65745512E-002
Run Code Online (Sandbox Code Playgroud)
我们可以使用 Python 中的内置配置/函数来做到这一点吗?
我知道我的问题与以下问题基本相同:Python - number of digits in exponent,但这个问题是 4 年前提出的,我不想调用这样的函数一千次。我希望现在应该有更好的解决方案。
不幸的是,您无法更改此默认行为,因为您无法覆盖这些str方法。
但是,您可以包装浮动,并使用以下__format__方法:
class MyNumber:
def __init__(self, val):
self.val = val
def __format__(self,format_spec):
ss = ('{0:'+format_spec+'}').format(self.val)
if ( 'E' in ss):
mantissa, exp = ss.split('E')
return mantissa + 'E'+ exp[0] + '0' + exp[1:]
return ss
print( '{0:17.8E}'.format( MyNumber(0.0665745511651039)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5402 次 |
| 最近记录: |