10

私が抱えている問題は、結果を小数点以下 2 桁に四捨五入することです。私のアプリは正しい結果を取得しますが、通貨の場合のように、アプリを最も近い小数点に丸めるのに苦労しています

cost = input("\nEnter the 12 month cost of the Order: ")
cost = float(cost)

print("\n12 Month Cost:",
  cost * 1,"USD")
print("6 Month Cost:",
  cost * 0.60,"USD")
print("3 Month Cost:",
  cost * 0.36,"USD")

たとえば、12 か月の価格が $23 の場合、6 か月の価格は 13.799999999999999 ですが、13.80 と表示したい

私はグーグルと数値を丸める方法を見てきましたが、結果を丸めるのにあまり助けが見つかりませんでした.

4

4 に答える 4

15

フォーマット指定子を使用する必要があります。

print("6 Month Cost: %.2fUSD" % (cost * .6))

さらに良いことに、浮動小数点数にまったく依存せず、decimal代わりにモジュールを使用してください。これにより、任意の精度が得られ、丸め方法をより細かく制御できます。

from decimal import Decimal, ROUND_HALF_UP
def round_decimal(x):
  return x.quantize(Decimal(".01"), rounding=ROUND_HALF_UP)

cost = Decimal(input("Enter 12 month cost: "))
print("6 Month Cost: ", round_decimal(cost * Decimal(".6")))
于 2012-11-19T22:39:45.583 に答える
2

古典的な方法は、100 を掛けて 0.5 を足し (これは四捨五入するため)、その結果を int() することです。これで、丸められたセントの数が得られました。もう一度 100 で割ると、丸められたフロートが返されます。

cost = 5.5566
cost *= 100 # cost = 555.66
cost += 0.5 # cost = 556.16
cost = int(cost) # cost = 556
cost /= float(100) # cost =  5.56

cost = 5.4444
cost = int(( cost * 100 ) + 0.5) / float(100) # cost = 5.44
于 2012-11-19T22:37:34.657 に答える
1

印刷するだけの場合は、文字列の書式設定が機能します。

print("\n12 Month Cost:%.2f USD"%(cost*1))
于 2012-11-19T22:40:09.433 に答える