我正在尝试在最小值和最大值之间添加值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);
}
但是当总和达到最大值时它并没有停止。
我做错了什么。
请建议
答案 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; =而不是!=。