回答:
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の回答をご覧ください。ただし、この方法は高速です。
newer_method_string = "{:.9f}".format(numvar)
- :
フィールドとフォーマットを区切るために必要なことに注意してください。とにかくこれを2.7.5でテストしました。
newer_method_string = "{0:.9f}".format(numvar)
-この古いバージョンのfield_nameに必要な0であることに注意してください。
明確にするために、f-stringフォーマットを使用できます。これはformat
メソッドとほぼ同じ構文を持っていますが、少しわかりやすくしています。
例:
print(f'{numvar:.9f}')
新しいf文字列の詳細:
以下は、さまざまなテスト済みメソッド(上記の最後のリンクから)の実行時間の図です。
実行時まで精度がわからない場合は、この他のフォーマットオプションが役立ちます。
>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'
.format
-method を使用したい場合は、次のように引数をネストすることによっても実行できることに注意してください'{:.{n}f}'.format(numvar,n=n)
。
str
機能はバグがあります。以下をお試しください。「0,196553」が表示されますが、正しい出力は「0,196554」です。そのためstr
、関数のデフォルト値はROUND_HALF_UPです。
>>> value=0.196553500000
>>> str("%f" % value).replace(".", ",")
.
対は何,
ですか?そして、それはパウリワゴの質問にどのように関連していますか?