当使用numpy创建数组时,它会执行类似"反向循环"的操作。输入列表为[0.7],numpy.array输出为[0.69999999999999996]。为什么会这样?
>>> import numpy
>>> nparray = numpy.array([0.7])
>>> nparray[0]
// why is not 0.7 ?
0.69999999999999996
更新:
使用dtype = numpy.dtype(decimal.Decimal)有效,但我不明白为什么,任何想法? :
>>> import numpy,decimal
>>> nparray = numpy.array([0.7],dtype=numpy.dtype(decimal.Decimal))
>>> nparray[0]
0.7
答案 0 :(得分:2)
它与二进制浮点数的工作方式有关:
您输入的十进制浮点数仅由实际存储在机器中的二进制浮点数近似。
正如文档所解释的那样,这是二进制浮点的本质。避免这种情况的唯一方法是使用另一个数字表示法。