一个简单的算法问题.....

来源:百度知道 编辑:UC知道 时间:2024/05/11 15:45:24
class SM
{
public static void main(String[] args)
{
double a=0.0,b=0.0,c=0.0,d=0.0;
System.out.println("Result as fallows:");
//for part-----------------------------------------------------------
System.out.println("\t--for--");
for(a=0.0;a<=8.0;a+=0.5)
{
for (b = 0.0; b <= 8.0; b += 0.5)
{
for (c = 0.0; c <= 8.0; c += 0.5)
{
d = 8.0 - a - b - c;
if (a * b * c * d == 8.0 && a + b + c + d == 8.0)
{
System.out.print("==>>: ");
System.out.println("a=" + a + ",b=" + b + ",c=" + c + ",d=" + d);
//System.exit(0);
}
}
}
}
//while part-----------------------------------------------------------
System.out.println("\t--while--

double型存在误差
因为在计算机中二进制表示浮点数时会出现误差是难免的
尤其在各种算术运算中
你可以换一个
用java.math.BigDecimal类进行精确的浮点数操作就不会出错了

double的精度误差。

class SM
{
public static void main(String[] args)
{
double a=0.0,b=0.0,c=0.0,d=0.0;
System.out.println("Result as fallows:");
//for part-----------------------------------------------------------
System.out.println("\t--for--");
for(a=0.0;a<=8.0;a+=0.5)
{
for (b = 0.0; b <= 8.0; b += 0.5)
{
for (c = 0.0; c <= 8.0; c += 0.5)
{
d = 8.0 - a - b - c;
if (a * b * c * d == 8.0 && a + b + c + d == 8.0)
{
System.out.print("==>>: ");
System.out.println("a=" + a + ",b=" + b + ",c=" + c + ",d=" + d);
//System.exit(0);
}
}
}
}
//while part---------