我在以下代码中遇到了双精度数及其总和的准确性问题:
public static void main(String[] args) {
for(double A = 1; A <= 100; A++)
{
for(double B = 1; B <= 100; B++)
{
for(double C = 1; C <= 100; C++)
{
for(double x = 3; x <= 100; x++)
{
for(double y = 3; y <= 100; y++)
{
for(double z = 3; z <= 100; z++)
{
if((Math.pow(A, x) + Math.pow(B, y)) == (Math.pow(C, z)))
{
System.out.println(A+"^"+x+" + "+B+"^"+y+" = "+C+"^"+z);
}
}
}
}
}
}
}
}
其中输出的前五项是:
1.0^3.0 + 2.0^53.0 = 2.0^53.0
1.0^3.0 + 2.0^54.0 = 2.0^54.0
1.0^3.0 + 2.0^55.0 = 2.0^55.0
1.0^3.0 + 2.0^56.0 = 2.0^56.0
1.0^3.0 + 2.0^57.0 = 2.0^57.0
很明显,将“1.0^3.0”(基本上是“1.0”)与“2.0^53.0”相加不等于“2.0^53.0”;y 值也有问题。
可能是我的条件语句有缺陷,或者我可能不得不使用不同的原始数据类型......谢谢。