2015-11-27 233 views
0

我想將雙精度(例如價格爲7.90的價格)轉換爲無損整數!我正在製作一個處理金錢的程序,我必須將它們輸入爲雙精度,然後將它們轉換爲整數,以便我可以處理它們,例如,當我有7.90歐元時,我想將它轉換爲美分,它將顯示爲789美分,而不是790美元!請幫我:)在此先感謝將雙精度轉換爲整數

+0

1)請創建一個完整的,最小的和可驗證的例子,2)請標記這是什麼編程語言 – Magisch

+0

@Magisch我編輯它,並說哪個是主要問題 –

+0

您可以使用英文變量名稱,至少例?即使僅爲自己編寫代碼,也建議使用英文名稱,因爲您幾乎可以永遠不會確定沒有人會閱讀它。 –

回答

0
More specificaly the problem is that if it was a double it would originaly save 59.999999 instead of 60 

數據類型double變量不能夠準確地存儲一些值,60是這些值之一,所以你要麼一)使用不同的數據類型(浮點患有同樣的問題),或者b)在你的支票中使用寬容。

在你的情況你的變量顯示59.9999999僅僅是因爲它的最接近的數據類型double可以得到60

+0

@Magish所以我應該怎麼做才能將它保存爲60? –

+0

@KritonGeorgiou爲什麼它是一個雙重類型開始? – Magisch

+0

@Magish因爲練習要求我們要求雙倍的錢,比如0,1 0,5等等...... –

0

一個可能的解決方案:

不要使用浮點數的。計算方式不同於1 Euro = 100 * 0.01 Euro,計算方法爲:1 Euro = 100 Cents。如果您需要歐元,請以整數計算併除以100。

另一種可能性:

在計算大數額的錢,它不適合到一個整數(也許不是連成一個長的),你可以使用BigIntegerBigDecimal類。與金錢合作時,這是通常和更好的方法。精度和位數是任意的,但處理時間和內存使用率可能更高。

+0

這就是我所做的!爲了能夠正確分割數字,我將它們轉換爲分。問題是它節省了60例如59 –

+0

我不認爲你明白我的意思。在你的問題中,你仍然在談論「7.90歐元」,並且你把它們當作雙打。這不應該是可能的,因爲你不應該得到雙打結果。除此之外,我描述了兩種可能的解決方案,所以「這就是我所做的」似乎對我來說完全不可能。你嘗試過兩種解決方案嗎?請注意,第二個是通常和推薦的方法,正如我在我的回答中所述。 –