我使用NumPy数组制作了一个简单的线性方程系统求解器。我手上有两个数组:一个2x2(A)和一个2x1一个(B)。
通过使用Ainv = np.linalg.inv(A)
反转第一个,然后使用Ainv.dot(B)
将其与第二个相乘,我得到了第三个2x1数组,该数组具有所需的x和y值,该数组由函数返回,顺便叫solveLin()
。
现在,如果我用适当的位置打印出print(solveLin())
,我就会得到具有正确值的数组[[-8.]
[ 5.]]
。
但是,例如,如果我以print(solveLin()[0][0])
为目标值,则会得到-7.999999999999998
和4.999999999999999
作为答案。
如果我将它们设置为显示为整数,则它们将变为-7和4
编辑:我确实理解了为什么浮点数会以这种方式起作用,但是我不明白为什么它们在数组中以一种方式显示,而在直接调用时以另一种方式显示。
答案 0 :(得分:0)
Numpy试图提供帮助并打印可读的东西。有关其工作的详细说明,请参见this。
在python中打印调用str和str不能打印出精确的内容,而只是提供信息。 repr()用于精确表示。
答案 1 :(得分:0)
从根本上说,这是由于numpy用于处理数字的二进制文件很难精确地用十进制表示,反之亦然。看看我们如何习惯用十进制的三分之一表示0.33333333。在python中,0.1代表0.100000000000000005551115123125 .. 这是有关此问题的python文档的链接:Decimal fixed point and floating point arithmetic