有趣的问题

有如下的一段代码:

Java代码 
  1. double f = 1 / 11.0;  // 0.09090909090909091
  2.         do {  
  3.             System.out.println(f);  
  4.             f += 1 / 11.0;  
  5.         }  
  6.         while(f != 9 / 11.0); //等于 0.8181818181818182 

 请问 print会打印出什么东西呢
可能你的第一直觉 就是这个循环执行8次,也就是当f = 9/11.0的时候,程序就该退出循环了。

可惜,计算机只能认识有限位数的数值,而9/11.0的结果是个无限循环小数,而计算机计算得到的f只能是有限的double类型的数据,所有永远都无法实现让f = 9/11.0的结果,故而这是一个无限死循环。
为了让程序趋于正常,我们可以修改判断条件(while(f <= 9 / 11.0))就ok了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值