numpy求逆矩阵出错

a是一个8*8的矩阵,我用a.I来求a的逆

因为det(a)不等于0,所以a应该是可逆的

但是a*a.I不等于单位矩阵,det(a)*det(a.I)也不等于1

import numpy as np
a=np.mat([
 [538084012500000.0, 6832812857142.857, 88573500000.0, 1180980000.0, 16402500.0, 243000.0, 4050.0, 90.0],
 [47829690000000, 531441000000, 5904900000, 65610000, 729000, 8100, 90, 1,],
 [13348388671875, 177978515625, 2373046875, 31640625, 421875, 5625, 75, 1,],
 [2799360000000, 46656000000, 777600000, 12960000, 216000, 3600, 60, 1,],
 [373669453125, 8303765625, 184528125, 4100625, 91125, 2025, 45, 1],
 [21870000000, 729000000, 24300000, 810000, 27000, 900, 30,1 ],
 [170859375, 11390625, 759375, 50625, 3375, 225, 15, 1],
 [0, 0, 0, 0, 0, 0, 0, 1]])
print(np.linalg.det(a))
print(np.linalg.det(a)*np.linalg.det(a.I))
print(a*a.I)

 

错误信息在哪?

因为有float类型,将float类型处理为int后,a与a的逆矩阵的乘积为1,不为1但是近似是因为求逆矩阵中产生了浮点数