2015-12-04 39 views
-1

讓我們假設客戶想知道產品的價格,因此我執行數據庫查詢,並獲取表示以分爲單位的值的值95(以int值)。現在,我要告訴客戶在歐元的價格,所以我這樣做:將float轉換爲字符串時的準確性損失

print("Price: " + format(price/100, ".2f") + "EUR") 

我得到印的是:

Price: 0.00EUR 

爲什麼,我該如何解決這一問題?

謝謝

+0

轉換您的變量浮點數(現在'price/100'的結果是整數)。例如,'print(「Price:」+格式(price/100.0,「.2f」)+「EUR」)'。 – avtomaton

+0

說到錢,最好用'Decimal':https://docs.python.org/3.5/library/decimal.html –

回答

2

你需要你的輸出是一個浮點數。嘗試除以100.0

0

您必須在字符串格式之前執行price = float(whatever)以進行浮動。如果分子或分母是一個浮點數,那麼結果也是。如果兩者都是整數,結果將是整數。

+0

這個答案意味着你可以做'price = float(price/100)' ,這是不正確的。 –

+0

不可以。答案意味着你可以在價格''price''時將''price''在字符串格式之前浮動。 但我編輯了答案,無論如何。 –

0

出現這種情況,因爲price100都是int秒 - 如果你做int小號任何操作,其結果將是一個int。當你做price/100,你得到0.95地板int0然後format (0, ".2f")給你0.00。你需要做的是將price轉換爲float,然後再對其進行任何操作,如format(float(price)/100, ".2f")或者你可以用浮點數100.0來代替,如format(price/100.0, ".2f")來解決這個問題。

相關問題