我正在尝试通过for循环,它就像任何其他for循环一样,但它似乎是无限的;我一定是在做一些愚蠢的事。有谁能看到它?
double x;
for(x = -1; x < 1; x+=2/20) {
double y = b * Math.sqrt(1-Math.pow(x-FocusToCenter, 2));
System.out.println("X:"+x+" Y: "+roundFourDecimal(y));
}
如果改变x + = 2/20,到x + = 0.1则完全没问题。
答案 0 :(得分:6)
2/20
评估的内容是什么?我怀疑因为它们都是整数,所以你得到0,因此根本不会增加x
。
尝试将它们表达为双打,例如2.0 / 20.0
答案 1 :(得分:2)
整数部门,2/20 = 0
即。 x=x+0
因此迭代器没有被修改,因此无限循环
要完成您想要做的工作,请尝试2.0/20.0
答案 2 :(得分:1)
2/20是整数算术运算,因此结果为零。基本上你没有在循环中递增x。为了将其作为浮动分区进行处理,您需要这样:
2.0/20
或
((double)2) / 20;