我知道計算機不能精確表示非整數。所以當我在java中添加2個雙打例如:java雙重計算
控制檯打印出來1724.6399999999999
但爲什麼724.64d + 100d
和724.64d + 10000d
控制檯打印出824.64和10724.64分開?
有沒有辦法知道我在什麼條件下加2個雙打時,總數是確切的數字?
我問的原因是因爲我們的舊程序使用雙重計算。並使用雙重比較來驗證數字。 例如:讓我們說總爲1849.64
,全部加起來的投入金額必須等於總這是1849.64
input 1: 724.64
input 2: 1125
將無法正常工作,因爲總和將1849.6399999999999
但如果我們輸入這樣下面的工作,總和是1849.64
input 1: 24.64
input 2: 1825
所以如何找到那些工作組合? 請注意,我無法訪問這個特定的非常舊的程序。當驗證失敗時,我們必須像第二個輸入組合一樣手動查找。 謝謝。
您必須在這裏接受一定數量的錯誤。 – Zavior
如果你想知道哪些數字在Java中有確切的表示形式,你將不得不瞭解Java語言規範,項目4.5.3指向IEEE 754.那裏有很多具體的本科數學。但是,除非你開發自己的編程語言,否則沒什麼意義。 –
我想找出一種快速方法來手動更改輸入組合以供我們的客戶通過驗證。我無權將代碼更改爲舊程序。 – huahua