同时在循环中添加一个值

时间:2014-02-10 04:17:38

标签: java while-loop

我正在尝试在最小值和最大值之间添加值1.12

Min = 1.3
Max = 6.9

1.3 + 1.12 = 2.42
2.42 + 1.12 = 3.54

直到达到最大值。

我做的是

double sum = 0,BucWidth = 1.12; 
sum = min + BucWidth ;
while(sum != max){
    sum = sum +BucWidth ;
    System.out.println("SUmmmmm" + sum);
}

但是当总和达到最大值时它并没有停止。

我做错了什么。

请建议

3 个答案:

答案 0 :(得分:7)

while (sum <= max) {
  sum = sum + BucWidth;   // or sum += bucWidth;
  System.out.println("SUmmmmm" + sum);
}

你应该检查它是否小于或等于,而不是在你的while条件下它是不等于,因为你想要退出它的循环达到极限。

答案 1 :(得分:4)

一般而言,比较浮点数以获得完全相等是非常麻烦的,除非您深入了解将在何时何地进行舍入。使用<而非!=更安全,因为该值可能永远不会与您预期的值完全匹配。

(这种烦恼是编程语言将int和float作为单独数据类型的众多原因之一。)

答案 2 :(得分:0)

对于浮点数或长双精度类型,可能会发生这样的数学运算,例如将值添加到另一个值可能不等于您在整数加法运算中假设的值。

int a=6;
while(sum!=12)
{
sum+=sum;
}

迭代一次。

考虑一下

  double a=7.4564;
    double b=7.4567;
            if(a==b){
                System.out.println("Both are equal");
            }
    else{
    System.out.println("Both are unequal");
    }

输出: - 两者不相等

这是因为小数点后面的某些数字可以改变,所以当使用像!=这样的操作时,数字必须精确到所使用的所有小数位,否则逻辑将不起作用。因此,在比较sum和max时,最好使用&lt; =而不是!=。