当不断添加随机双精度直到达到特定距离时,不能使while()循环工作

时间:2014-09-12 16:38:20

标签: java

我使用while()循环来保持将随机双精度加到x直到x到达距离原点的特定距离。它停止运行没有任何输出。如果我将while()循环更改为 虽然(Math.abs(x)==距离),但它给了我输出但不是我想要的那个。这些代码有什么问题?感谢您的任何意见。

while (Math.abs(x) != distance)
{
  randValue = (-1.0) + 2.0 * rand.nextDouble();
  x = x + randValue;
  move = move +1;
}   
System.out.println("After " + move + " moves X now at " + x);

1 个答案:

答案 0 :(得分:6)

您正在检查该值是否正好所需的距离。您需要检查它是否达到或超过所需的距离:

while (Math.abs(x) < distance)

一般情况下,将==!=与浮点值一起使用是一个坏主意 - 在您执行某些操作后,您经常会发现某个值为关闭到预期的一个,但不是完全。如果你想检查一个值是否&#34;几乎等于&#34;另一个,你需要定义一个特定的容差并检查。我不认为你的情况需要这样做。