亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

大佬們,求幫助!為什么我在transfer方法中添加了一個if判斷的代碼,為什么結果明明是100000.00,系統卻認為返回的能量總值不為100000.00,執行了if內的輸出語句

大佬們,求幫助!為什么我在transfer方法中添加了一個if判斷的代碼,為什么結果明明是100000.00,系統卻認為返回的能量總值不為100000.00,執行了if內的輸出語句?哪里出了問題呢!謝謝大佬們

https://img1.sycdn.imooc.com//5c9dc76a0001ac2c09010504.jpg

https://img1.sycdn.imooc.com//5c9dc76a0001385c08850529.jpg

https://img1.sycdn.imooc.com//5c9dc7770001a21e09310608.jpg


正在回答

3 回答

這涉及到浮點型精度不準確問題,建議你把兩邊都轉成int類型,進行比較

0 回復 有任何疑惑可以回復我~

樓上說的對,getTotal返回的準確值未必是100000.00,只是格式化之后舍棄了一些東西才顯示的是100000.00

0 回復 有任何疑惑可以回復我~

打印一下getTotalEnergies的返回值,這個方法返回值是一個double類型的值,存儲的并不一定就是100000.00,這個是格式化后的數字

System.out.print(Thread.currentThread().getName());
energyBoxes[from]?-=?amount;			
System.out.printf("從%d轉移%10.2f單位能量到%d",?from,?amount,?to);			
energyBoxes[to]?+=?amount;			
System.out.printf("?能量總和:%10.2f%n",?getTotalEnergies());			
System.out.println("能量總和:"+getTotalEnergies());			
//喚醒所有在lockObj對象上等待的線程			
lockObj.notifyAll();

打印結果

能量總和:100000.00000000004
TransferThread_58從58轉移????388.33單位能量到53?能量總和:?100000.00
能量總和:100000.00000000004
TransferThread_93從93轉移????647.33單位能量到82?能量總和:?100000.00
能量總和:100000.00000000004
TransferThread_4從4轉移????112.60單位能量到33?能量總和:?100000.00
能量總和:100000.00000000004
TransferThread_76從76轉移????652.61單位能量到96?能量總和:?100000.00
能量總和:100000.00000000004
TransferThread_27從27轉移????365.66單位能量到80?能量總和:?100000.00
能量總和:100000.00000000004
TransferThread_26從26轉移?????99.96單位能量到51?能量總和:?100000.00
能量總和:100000.00000000004
TransferThread_51從51轉移??????3.95單位能量到43?能量總和:?100000.00
能量總和:100000.00000000003
TransferThread_76從76轉移????531.46單位能量到24?能量總和:?100000.00
能量總和:100000.00000000003
TransferThread_72從72轉移????250.74單位能量到88?能量總和:?100000.00
能量總和:100000.00000000003
TransferThread_74從74轉移????163.45單位能量到15?能量總和:?100000.00
能量總和:100000.00000000003
TransferThread_0從0轉移????954.86單位能量到57?能量總和:?100000.00
能量總和:100000.00000000001
TransferThread_82從82轉移????672.90單位能量到35?能量總和:?100000.00
能量總和:100000.00000000001


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

大佬們,求幫助!為什么我在transfer方法中添加了一個if判斷的代碼,為什么結果明明是100000.00,系統卻認為返回的能量總值不為100000.00,執行了if內的輸出語句

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號