いくつかの小さな数値を単純で読みやすい出力に変換しようとしています。これが私の方法ですが、もっと簡単なものがあるのではないかと思っています。
x = 8.54768039530728989343156856E-58
y = str(x)
print "{0}.e{1}".format(y.split(".")[0], y.split("e")[1])
8.e-58
いくつかの小さな数値を単純で読みやすい出力に変換しようとしています。これが私の方法ですが、もっと簡単なものがあるのではないかと思っています。
x = 8.54768039530728989343156856E-58
y = str(x)
print "{0}.e{1}".format(y.split(".")[0], y.split("e")[1])
8.e-58
これはあなたをかなり近づけます、あなたは8.e-58
正確に必要ですか、それともあなたはそれを読みやすいものに短縮しようとしていますか?
>>> x = 8.54768039530728989343156856E-58
>>> print "{0:.1e}".format(x)
8.5e-58
別の方法:
>>> print "{0:.0e}".format(x)
9e-58
Python 2.7または3.1以降では、位置を示す最初のゼロを省略できるため、次のようになります。"{:.1e}".format(x)
このような?
>>> x = 8.54768039530728989343156856E-58
>>> "{:.1e}".format(x)
'8.5e-58'
文字列操作を行わずに指数を抽出したい場合は、これを行う別の方法。
def frexp_10(decimal):
logdecimal = math.log10(decimal)
return 10 ** (logdecimal - int(logdecimal)), int(logdecimal)
>>> frexp_10(x)
(0.85476803953073244, -57)
必要に応じてフォーマットします...
答えは 2 つあります。1 つは数値を使用するためのもので、もう 1 つは簡単に表示するためのものです。
実際の数値の場合:
>>> round(3.1415,2)
3.14
>>> round(1.2345678e-10, 12)
1.23e-10
組み込みのround()関数は、数値を任意の小数点以下の桁数に丸めます。これを使用して、読み取り値から意味のない桁を切り捨てることができます。
ディスプレイについては、使用するディスプレイのバージョンが重要です。Python 2.x では、3.x で非推奨になりましたが、'e' フォーマッタを使用できます。
>>> print "%6.2e" % 1.2345678e-10
1.23e-10
または 3.x では、次を使用します。
>>> print("{:12.2e}".format(3.1415))
3.14e+00
>>> print("{:12.2e}".format(1.23456789e-10))
1.23e-10
または、ゼロが好きな場合:
>>> print("{:18.14f}".format(1.23456789e-10))
0.00000000012346