私は浮動小数点数を持っています、135.12345678910
と言います。その値を文字列に連結したいのですが、135.123456789
だけが必要です。 printでは、次のようにして簡単にこれを行うことができます。
print "%.9f" % numvar
numvar
は私の元の番号です。これを行う簡単な方法はありますか?
Python <3(例:2.6 [コメントを参照]または2.7)では、2つの方法があります。
# Option one
older_method_string = "%.9f" % numvar
# Option two
newer_method_string = "{:.9f}".format(numvar)
ただし、3以上のPythonバージョン(3.2または3.3など)の場合、オプション2は 推奨 です。
オプション2の詳細については、 Pythonドキュメントの文字列フォーマットに関するこのリンク をお勧めします。
オプション1の詳細については、 このリンクで十分であり、さまざまなフラグに関する情報があります です。
Python 3.6(2016年12月に正式リリース)、f
文字列リテラル、 詳細はこちら を追加しました。これにより、str.format
メソッドが拡張されます(f"{numvar:.9f}"
は元の問題を解決します)、つまり、
# Option 3 (versions 3.6 and higher)
newest_method_string = f"{numvar:.9f}"
問題を解決します。詳細については、@ Or-Duanの回答をご覧ください。ただし、この方法はfastです。
わかりやすくするために、 f-string フォーマットを使用できます。これはformat
メソッドとほぼ同じ構文ですが、もう少し見やすくします。
例:
print(f'{numvar:.9f}')
新しいf文字列についてもっと読む:
round
を使う:
>>> numvar = 135.12345678910
>>> str(round(numvar, 9))
'135.123456789'
書式設定をするのは印刷ではありません、それは文字列の特性なので、あなたはただ使うことができます
newstring = "%.9f" % numvar
実行時まで精度がわからない場合は、この他のフォーマットオプションが便利です。
>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'
9桁の精度を設定するには、次のようにします。
print "%.9f" % numvar
2桁の精度で返す:
print "%.2f" % numvar
2桁の精度とfloat型の変換値を返します。
numvar = 4.2345
print float("%.2f" % numvar)
str
関数にはバグがあります。以下を試してください。 「0,196553」が表示されますが、正しい出力は「0,196554」です。 str
関数のデフォルト値はROUND_HALF_UPであるためです。
>>> value=0.196553500000
>>> str("%f" % value).replace(".", ",")