有如下的一段代码:
- double f = 1 / 11.0; // 0.09090909090909091
- do {
- System.out.println(f);
- f += 1 / 11.0;
- }
- 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了