2017-05-19 16 views
-1

私は15.579という数字を持っています。私は0.15790000E + 02を書くためにそれをフォーマットしたいと思います。 私はそれを1.57900000E + 01として表示することができますが、小数点の前に0を設定します。 Pythonでどうすればいいですか?Pythonで浮動小数点数をフォーマットする方法は?

+0

@ChandaKorat:この1つは仮数(仮数)は0.1と1の間にある非標準のフォームがので、この重複はないたいながら「可能重複」は、標準的な科学的表記法を希望していること - このけれども質問には他の問題があるかもしれません。 –

+0

質問を理解してくれたRoryに感謝します。どうか、これで私を助けてくれますか? –

+0

表示したい小数点以下の桁数はいくつですか?それは一貫しているのでしょうか、それともパラメータとして望みますか?そして、今は行く必要があり、今日の午後(7時間後)までは答えられません。 –

答えて

1

これは動作するはずです。これは、負の数と奇妙な結果をチェックします。私もPythonのデフォルトの精度を使用し、それを小数点文字と同様に変更可能にしました。ここでは、8桁の数字をしたい場合は、簡単にあなたの例のように、デフォルトの精度を変更することができますが、Pythonのデフォルトは6

def alt_sci_notation(x, prec=6, decpt='.'): 
    """Return a string of a floating point number formatted in 
    alternate scientific notation. The significand (mantissa) is to be 
    between 0.1 and 1, not including 1--i.e. the decimal point is 
    before the first digit. The number of digits after the decimal 
    point, which is also the number of significant digits, is 6 by 
    default and must be a positive integer. The decimal point character 
    can also be changed. 
    """ 
    # Get regular scientific notation with the new exponent 
    s = '{0:.{p}E}'.format(10 * x, p=prec-1) 
    # Handle negative values 
    prefix = '' 
    if s[0] == '-': 
     prefix = s[0] 
     s = s[1:] 
    # Return the string after moving the decimal point 
    if prec > 1: # if a decimal point exists in thesignificand 
     return prefix + '0' + decpt + s[0] + s[2:] 
    else: # no decimal point, just one digit in the significand 
     return prefix + '0' + decpt + s 

あるiPythonのサンプルの結果があります。

alt_sci_notation(15.579, 8) 
Out[2]: '0.15579000E+02' 

alt_sci_notation(-15.579, 8) 
Out[3]: '-0.15579000E+02' 

alt_sci_notation(0) 
Out[4]: '0.000000E+00' 

alt_sci_notation(100000000) 
Out[5]: '0.100000E+09' 

alt_sci_notation(.00000001) 
Out[6]: '0.100000E-07' 
関連する問題