私の目標は、精度を追加せずに、「1.2」などの文字列を科学的記数法に変換することです。問題は、出力の最後に常に余分な0が表示されることです。
>>> input = "1.2"
>>> print '{:e}'.format(float(input))
1.200000e+00
私はちょうど取得する方法を理解しようとしています1.2e+00
。formatステートメントで精度を指定できることはわかっていますが、長い文字列を不必要に切り捨てたくありません。トレーニング0を抑制したいだけです。
Decimal.normalize()を使用してみました。これは、e<2の場合を除いてすべての場合に機能します。
>>> print Decimal("1.2000e+4").normalize()
1.2E+4
>>> print Decimal("1.2000e+1").normalize()
12
ですから、12が欲しくないことを除いて、1.2e+1が欲しいのです。:P
任意の提案をいただければ幸いです!
編集: 明確にするために、入力値は、現在不明な所定の長さにすでに適切に丸められています。適切なフォーマット精度の再計算を避けようとしています。
基本的に、「1.23」と「1234.56」の入力値を持つことができます。これは「1.23e+0」と「1.23456e+3」として出力されるはずです。
入力文字列の長さをチェックし、それを使用して手動で精度を指定する必要があるかもしれませんが、指数形式が任意に0を追加するのを妨げる可能性のあるものを見逃していないことを確認したいと思いました。