表示したい:
49
なので 49.00
そして:
54.9
なので 54.90
小数点以下の長さや小数点以下の桁数に関係なく、小数点以下Decimal
2桁で表示したいのですが、効率的に表示したいのですが。目的は、金額を表示することです。
例えば、 4898489.00
表示したい:
49
なので 49.00
そして:
54.9
なので 54.90
小数点以下の長さや小数点以下の桁数に関係なく、小数点以下Decimal
2桁で表示したいのですが、効率的に表示したいのですが。目的は、金額を表示することです。
例えば、 4898489.00
回答:
おそらくモジュールのDecimal()
オブジェクトを使用していると思いますdecimal
か?(もしあなたが任意に大きな数で小数点を越えて正確に2桁の精度が必要なら、あなたは間違いなくそうすべきであり、それがあなたの質問のタイトルが示唆していることです...)
その場合は、ドキュメントの10進数のFAQセクションに、質問と回答のペアが含まれていると便利です。
Q.小数点以下2桁の固定小数点アプリケーションでは、入力によっては桁数が多く、四捨五入する必要があります。その他は、桁数が多いはずがないため、検証する必要があります。どのような方法を使用する必要がありますか?
A.quantize()メソッドは、固定小数点以下の桁数に丸めます。不正確なトラップが設定されている場合は、検証にも役立ちます。
>>> TWOPLACES = Decimal(10) ** -2 # same as Decimal('0.01')
>>> # Round to two places
>>> Decimal('3.214').quantize(TWOPLACES)
Decimal('3.21')
>>> # Validate that a number does not exceed two places
>>> Decimal('3.21').quantize(TWOPLACES, context=Context(traps=[Inexact]))
Decimal('3.21')
>>> Decimal('3.214').quantize(TWOPLACES, context=Context(traps=[Inexact]))
Traceback (most recent call last):
...
Inexact: None
次の質問は
Q.有効な2つの場所の入力を取得したら、アプリケーション全体でその不変条件をどのように維持しますか?
(他の多くの有用な情報とともに)その答えが必要な場合は、ドキュメントの前述のセクションを参照してください。また、Decimal
小数点以下2桁の精度でsを保持する場合(すべての桁を小数点の左側に、右側に2桁を維持するために必要なだけの精度を意味します...)、それからそれらを文字列に変換するとstr
うまくいきます:
str(Decimal('10'))
# -> '10'
str(Decimal('10.00'))
# -> '10.00'
str(Decimal('10.000'))
# -> '10.000'
あなたは使うべき新しいフォーマットの仕様を、あなたの価値を表現する方法を定義するには:
>>> from math import pi # pi ~ 3.141592653589793
>>> '{0:.2f}'.format(pi)
'3.14'
ドキュメンテーションは時々少しあいまいになる可能性があるため、以下の、読みやすいリファレンスをお勧めします。
.format()
文字列フォーマット%
文字列フォーマットと新しいスタイルの文字列フォーマットを比較し.format()
ますPython 3.6はリテラル文字列補間(f文字列とも呼ばれます)を導入したので、上記をさらに簡潔に次のように記述できます。
>>> f'{pi:.2f}'
'3.14'
format
はを返しますがstr
、float
:print type({0:.2f}".format(pi))
は返しません<type 'str'>
。
return
。精神的にprint
sに変えてください。
"{:.2f}".format(pi)
0:
ますか?これ.
はpython文字列の一部だと思います
Pythonドキュメントの文字列フォーマット操作セクションには、探している答えが含まれています。要するに:
"%0.2f" % (num,)
いくつかの例:
>>> "%0.2f" % 10
'10.00'
>>> "%0.2f" % 1000
'1000.00'
>>> "%0.2f" % 10.1
'10.10'
>>> "%0.2f" % 10.120
'10.12'
>>> "%0.2f" % 10.126
'10.13'
0
後%
、およびラップする必要はありませんnum
ではtuple
。
r = 1; "%s" % r; r = (1, 2); "%s" % r
対を検討してくださいr = 1; "%s" % (r,); r = (1,2 ); "%s" % (r,)
。そのため、Pythonの最も洗練されたコーディングスタイルでは現在、無条件のタプルが使用されています(Python 3では、エラーが発生しやすい文字列フォーマットのメソッド全体が非推奨になりました)。
文字列フォーマット演算子を次のように使用できます。
num = 49
x = "%.2f" % num # x is now the string "49.00"
「効率的」とはどういう意味かわかりません。これはほとんどの場合、アプリケーションのボトルネックではありません。プログラムの実行速度が遅い場合は、まずプロファイルを作成してホットスポットを見つけ、次にそれらを最適化します。
これを通貨に使用していて、値をで区切る,
場合は、
$ {:,.f2}.format(currency_value)
。
例えば:
currency_value = 1234.50
$ {:,.f2}.format(currency_value)
-->
$ 1,234.50
少し前に書いたコードを次に示します。
print("> At the end of year " + year_string + " total paid is \t$ {:,.2f}".format(total_paid))
> At the end of year 1 total paid is $ 43,806.36
> At the end of year 2 total paid is $ 87,612.72
> At the end of year 3 total paid is $ 131,419.08
> At the end of year 4 total paid is $ 175,225.44
> At the end of year 5 total paid is $ 219,031.80 <-- Note .80 and not .8
> At the end of year 6 total paid is $ 262,838.16
> At the end of year 7 total paid is $ 306,644.52
> At the end of year 8 total paid is $ 350,450.88
> At the end of year 9 total paid is $ 394,257.24
> At the end of year 10 total paid is $ 438,063.60 <-- Note .60 and not .6
> At the end of year 11 total paid is $ 481,869.96
> At the end of year 12 total paid is $ 525,676.32
> At the end of year 13 total paid is $ 569,482.68
> At the end of year 14 total paid is $ 613,289.04
> At the end of year 15 total paid is $ 657,095.40 <-- Note .40 and not .4
> At the end of year 16 total paid is $ 700,901.76
> At the end of year 17 total paid is $ 744,708.12
> At the end of year 18 total paid is $ 788,514.48
> At the end of year 19 total paid is $ 832,320.84
> At the end of year 20 total paid is $ 876,127.20 <-- Note .20 and not .2
その方法を示す最も簡単な方法の例は次のとおりです。
コード:
>>> points = 19.5
>>> total = 22
>>>'Correct answers: {:.2%}'.format(points/total)
`
出力:正解:88.64%
どうですか
print round(20.2564567 , 2) >>>>>>> 20.25
print round(20.2564567 , 4) >>>>>>> 20.2564