C++中矩阵演算,为什么结果是不符合自己去运算的结果的?自己运算的是正确的

C++中矩阵运算,为什么结果是不符合自己去运算的结果的?自己运算的是正确的.
#include <Eigen/Dense>
#include <iostream>
#include <cmath>
using namespace Eigen;

int main()
{
  MatrixXf m1(10,1);
  m1 << 50,51,52,54,53,60,59,65,67,70;
  MatrixXf m3(3,10);
  MatrixXf m2(10,3);
  m3<< 1,1,1,1,1,1,1,1,1,1,     //Xf[,5:6]
       54,61,52,70,63,0,0,0,0,0,
       0,0,0,0,0,79,68,65,79,76;
  m2 << m3.transpose();
  MatrixXf I(10,10);
  I.setIdentity(10,10);
  float k =(m1.transpose()*(I-m2*(m2.transpose()*m2).inverse()*m2.transpose())*m1).determinant();
  std::cout << "k=" << std::endl;
  std::cout << k << std::endl << std::endl;
  system("pause");
}

C++最后的结果:87.7938
自己算的结果:88.29133
------解决思路----------------------
  float k =(m1.transpose()*(I-m2*(m2.transpose()*m2).inverse()*m2.transpose())*m1).determinant();

把这个分解出来,一步一步计算,验证看那一步有问题。
感觉你的像是误差的问题,误差被扩大了