讓我們假設客戶想知道產品的價格,因此我執行數據庫查詢,並獲取表示以分爲單位的值的值95(以int值)。現在,我要告訴客戶在歐元的價格,所以我這樣做:將float轉換爲字符串時的準確性損失
print("Price: " + format(price/100, ".2f") + "EUR")
我得到印的是:
Price: 0.00EUR
爲什麼,我該如何解決這一問題?
謝謝
讓我們假設客戶想知道產品的價格,因此我執行數據庫查詢,並獲取表示以分爲單位的值的值95(以int值)。現在,我要告訴客戶在歐元的價格,所以我這樣做:將float轉換爲字符串時的準確性損失
print("Price: " + format(price/100, ".2f") + "EUR")
我得到印的是:
Price: 0.00EUR
爲什麼,我該如何解決這一問題?
謝謝
你需要你的輸出是一個浮點數。嘗試除以100.0
您必須在字符串格式之前執行price = float(whatever)
以進行浮動。如果分子或分母是一個浮點數,那麼結果也是。如果兩者都是整數,結果將是整數。
這個答案意味着你可以做'price = float(price/100)' ,這是不正確的。 –
不可以。答案意味着你可以在價格''price''時將''price''在字符串格式之前浮動。 但我編輯了答案,無論如何。 –
出現這種情況,因爲price
和100
都是int
秒 - 如果你做int
小號任何操作,其結果將是一個int
。當你做price/100
,你得到0.95
地板int
即0
然後format (0, ".2f")
給你0.00
。你需要做的是將price
轉換爲float
,然後再對其進行任何操作,如format(float(price)/100, ".2f")
或者你可以用浮點數100.0
來代替,如format(price/100.0, ".2f")
來解決這個問題。
轉換您的變量浮點數(現在'price/100'的結果是整數)。例如,'print(「Price:」+格式(price/100.0,「.2f」)+「EUR」)'。 – avtomaton
說到錢,最好用'Decimal':https://docs.python.org/3.5/library/decimal.html –