我用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
编辑:我明白为什么浮点数是这样的,但我不明白为什么它们在数组中以一种方式显示,然后在直接调用时以另一种方式显示
从根本上说,这是因为二进制(numpy用来处理数字的东西)很难精确地用十进制表示,反之亦然。看看我们是怎么习惯用十进制表示三分之一的,0.33333。。在python中,0.1是0.10000000000000055515123125。。 下面是python文档关于这个问题的链接:Decimal fixed point and floating point arithmetic
Numpy试图提供帮助,把东西打印出来可读。请参阅this以获得关于它所做工作的详细解释
在python中打印str调用,str不需要打印精确的内容,只需要提供信息。repr()用于精确表示
相关问题 更多 >
编程相关推荐