<p>当你计算逆矩阵时,你的数组被转换成<code>float64</code>,它的<a href="http://en.wikipedia.org/wiki/Machine_epsilon" rel="nofollow noreferrer">machine epsilon</a>是1e-15。epsilon是浮点数的相对量化步长。在</p>
<p>如果有疑问,我们可以使用<code>finfo</code>函数询问有关浮点数据类型的numpy信息。在这种情况下</p>
<pre><code>np.finfo('float64')
finfo(resolution=1e-15,
min=-1.7976931348623157e+308, max=1.7976931348623157e+308,
dtype=float64)
</code></pre>
<p>因此,从技术上讲,小于<code>eps</code>的值对于<code>float64</code>类型来说是非常精确的0表示。在</p>
<p>如果只是表示方式让您感到困扰,您可以告诉numpy不要打印小的浮点数(从0开始为1eps或更少),方法是:</p>
^{pr2}$
<p>之后,您的print语句返回:</p>
<pre><code>[[ 0. -2.5]
[-2. -6.5]]
</code></pre>
<p>请注意,这是所有浮点实现所共有的一般数值问题。您可以在以下位置找到有关浮点舍入错误的详细信息:</p>
<ul>
<li><a href="https://stackoverflow.com/questions/21895756/why-are-floating-point-numbers-inaccurate">Why Are Floating Point Numbers Inaccurate?</a></li>
</ul>
<p>或者在网上:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems" rel="nofollow noreferrer">Floating Point Accuracy Problems</a></li>
<li><a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" rel="nofollow noreferrer">What Every Computer Scientist Should Know About Floating-Point Arithmetic</a></li>
</ul>