0

私は浮動小数点数を特定の形式で印刷する必要があります。これは科学的表記法に非常によく似ています。 数字が-345.678の場合、科学的表記は-3.45678E2になりますが、代わりに-3445678D03を出力する必要があります。具体的には、小数点の左側に数字を入れることはできません。 Python 3でこれを行う方法はありますか?Python:科学的表記の一種

答えて

0

私はあなたのフォーマットの完全な詳細のわからないんだけど、次は仕事に容易に修正作業どちらかでなければなりません:

from decimal import Decimal 

def sci_str(dec): 
    return ('{:.' + str(len(dec.normalize().as_tuple().digits) - 1) + 'E}').format(dec) 

def mod_sci_str(x): 
    s = sci_str(10*Decimal(str(x))) 
    s = s.replace('E+','D0') 
    s = s.replace('E-','D0-') 
    s = s.replace('.','') 
    if s.startswith('-'): 
     return '-.' + s[1:] 
    else: 
     return '.' + s 

機能sci_strが、この中に原因@MikeMに巧妙なユーティリティです例えば、質問

>>> mod_sci_str(-345.678) 
'-.345678D03' 
>>> mod_sci_str(345.678) 
'.345678D03' 
>>> mod_sci_str(0.0034) 
'.34D0-2' 
関連する問題