私の入力は 3.23 ですが、float を使用すると 3.2 になり、
入力が 3.00 の場合、フロートすると 3.0 になります。
文字列から float に変換するとき、3.0 ではなく 3.00 にしたいのですが、可能ですか? それを可能にするコードを知りたいのですが、小数点以下 2 桁までが問題になる問題では、3.23 の方が精度が高く、3.2 よりも優れています。
このスレッドは最初に「stringformattingdecimalpython」という言葉になっているので、もっと最近の答えを提供するのは良いことだと思います。
>>> P=34.3234564
>>> string="{:.2f}".format(P)
>>> string
'34.32'
小数の精度が必要な場合は、pythondecimal
モジュールを使用します。
from decimal import Decimal
x = Decimal('3.00')
print x
それは印刷します:
Decimal('3.00')
あなたが望むのは、浮動小数点数を必要な小数点以下の桁数の文字列に変換することだと思います。%.3f を使用してそれを実現できます (ここで 3 は、出力する小数点以下の桁数です。例:
>>> print "Value: %.2f" % 3.0000
値: 3.00
浮動小数点数を目的の精度で出力したい場合は、次のような出力フォーマット コードを使用できます。
x = 3.125 と仮定
print "%.1f" % (x) # prints 3.1
print "%.2f" % (x) # prints 3.12
print "%.3f" % (x) # prints 3.125
print "%.4f" % (x) # prints 3.1250
これはpython 2.6で動作します(バージョン3で印刷機能が変更されたと思います)。
また、浮動小数点数は特定の精度でしか保存できないため、正確に同じ数が返されない場合があることにも注意してください。たとえば、0.1 は 0.9999999987 のように格納される場合があります。