C ++ * =没有给出正确的答案

时间:2015-02-05 13:53:29

标签: c++

我试图将所有元素乘以对角线。例如,如果我想找到可以使用+=的总和,但每当我尝试使用*=时,它都会返回正确的答案。这是我的代码:

std::vector<std::vector<double> > U = 
{
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9},

};

double calculateDet(const std::vector<std::vector<double> > matrix )
{
    double det = 0.0; 

    for(unsigned i = 0; (i < matrix.size()); i++)
    {
        for(unsigned j=0; (j < matrix[i].size()); j++)
        {
            if(i == j)
            {
                det *= matrix[i][j];
            }
        }
    }
    return det; 
}

计算应该是:1*5*6 = 30但是,我得到的答案是0。

有什么想法吗?

编辑:

我也试过使用求和,所以:det += matrix[i][j] * matrix[i][j]但是给了我更高的价值。

1 个答案:

答案 0 :(得分:10)

在您的代码中

double det = 0.0; 
<...>
det *= matrix[i][j];

如果你将任何东西乘以零,你就会得零。您应该使用det初始化1