浮点数转整型的疑惑,单位矩阵

问题遇到的现象和发生背景

M=np.mat("1 22 44 5;1 0 -3 6;-9 -3 8 1;1 3 4 9")
I=np.linalg.inv(M)
问题相关代码,请勿粘贴截图
运行结果及报错内容

现在的疑惑是转成整型的时候,为什么结果是
(M*I).astype(int)
matrix([[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])

我的解答思路和尝试过的方法
我想要达到的结果

正确结果应该是
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
这样才对啊,请问大家是哪里出了问题

因为第一个数不是1,只是因为print显示的小数点位数不够约成了1,你用int转类型直接截取的整数部分0。

print((M*I)[0,0])
0.9999999999999986

M=np.mat("1 22 44 5;1 0 -3 6;-9 -3 8 1;1 3 4 9")
I=np.array(np.linalg.inv(M))

matrix([[ 1.00000000e+00, -1.11022302e-14, -4.97865638e-16,
5.99520433e-15],
[-1.38777878e-17, 1.00000000e+00, 2.42861287e-17,
0.00000000e+00],
[-7.63278329e-17, -2.22044605e-15, 1.00000000e+00,
1.99840144e-15],
[ 9.02056208e-17, 4.44089210e-16, 3.64291930e-17,
1.00000000e+00]])
就是很纳闷,为什么第一个不是1,而转成了0?太奇怪了。
如果把结果赋值再做转换又可以,这很奇怪