矩阵的加法与奇怪的结果

时间:2014-09-12 23:16:58

标签: java matrix

我写了以下代码......

public class MatrixAddition
{
    public static void main(String[] args)
    {

        double matrix[][] = { { 1.2, 3.3, 1.2 }, { 1.0, 2.2, 4.5 }, { 1.3, 4.5, 2.2 } };
        double matrix1[][] = { { 2.2, -3.3, 1.1 }, { 7.0, -2.2, 4.2 }, { 2.2, 0.0, 0.3 } };
        double result[][] = new double[matrix.length][matrix1.length];

        for(int iResult = 0; iResult < result.length; iResult++) {
            for(int jResult = 0; jResult < result[iResult].length; jResult++) {
                result[iResult][jResult] = matrix[iResult][jResult] + matrix1[iResult][jResult];

                System.out.print(result[iResult][jResult] + " ");
            }

            System.out.print("\n");
        }
    }
}

结果是:

3.4000000000000004 0.0 2.3

8.0 0.0 8.7 

3.5 4.5 2.5 

每当我更改Matrix [i0] [j0]和Matrix1 [i0] [j0]的值时,我得到了正确的结果,但是当值为1.2和2.2时,我总是得到3.400000000000004。我该如何解决这个问题,以及为什么会这样。

提前致谢。

2 个答案:

答案 0 :(得分:0)

浮点值是近似值。某些十进制值无法用它们精确表示。通常,您可以通过在输出数字时将数字格式化为合理的小数位数来隐藏它。或者使用其他数字类型,例如BigDecimal

答案 1 :(得分:0)

这是因为正在使用浮点值,正如其他人所说的那样 - here is a great question that contains explanations about this very thing