0
我想減去2個雙精度並將結果轉換爲整數。將int高效轉換爲double
d = 1.41384;
d1 = 1.4133;
d2 = (d-d1); /// 0.0005399999999
int i = (int) (d2 /0.00001); // 53
int i1 = (int) Math.ceil((d2 /0.00001)); //54
Double無法表示所有值,因此減法可能會導致錯誤值,如上例所示。它是否也會發生減法的價值可能比預期略大? (例如0.00540000000001) Math.ceil在這種情況下給了我正確的答案,但有沒有更好的方法來解決這個問題?
問題發生在*減法之前* –
用'Math.round'替換'Math.ceil',所以它在任何情況下都能正常工作。 – Ari