为了账号安全,请及时绑定邮箱和手机立即绑定

大佬们,求帮助!为什么我在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下载
官方微信