私は浮動小数点数を持っています135.12345678910
. その値を文字列に連結したいのですが、欲しいのは135.123456789
. print を使用すると、次のようにして簡単にこれを行うことができます。
print "%.9f" % numvar
私のnumvar
元の番号です。これを行う簡単な方法はありますか?
私は浮動小数点数を持っています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)
ただし、Python バージョン 3 (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 の回答をご覧ください。ただし、この方法は高速です。
使用round
:
>>> numvar = 135.12345678910
>>> str(round(numvar, 9))
'135.123456789'
実行時まで精度がわからない場合は、次の別の書式設定オプションが役立ちます。
>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'
書式設定を行うのは印刷ではなく、文字列のプロパティであるため、次のように使用できます。
newstring = "%.9f" % numvar
str
関数にバグがあります。以下をお試しください。「0,196553」が表示されますが、正しい出力は「0,196554」です。str
関数のデフォルト値は ROUND_HALF_UP であるためです。
>>> value=0.196553500000
>>> str("%f" % value).replace(".", ",")