我有两个float64类型的数组,当我将第一个值分配给第二个时,它会舍入值。以下简单的代码说明了问题,并排除了仅仅编号表示事物的可能性。 (我已经将我的代码片段架构化为更具可读性,但它本质上是相同的东西)
X = zeros((2,2))
Y = zeros((2,2))
Z = X #a shorter way of making a new matrix, equal to X...
X[0,0] = Y[0,0]
Z[0,0]=0
print Y[0,0]
print X[0,0]
print type(Y[0,0])
print type(X[0,0])
if X[0,0]==Y[0,0]:
print'they are equal'
else:
print'they are NOT equal'
我为所有系数运行了这段代码,所有输出都与此类似:
1.90897e-14
0
<type 'numpy.float64'>
<type 'numpy.float64'>
they are NOT equal
在我看来,X数组是另一种类型,但是它以相同的方式创建,使用标准类型的零()函数(float64)
编辑:使用
初始化数组X = zeros((2,2), dtype=float64)
Y = zeros((2,2), dtype=float64)
在上面的例子中还包括一个额外的有用的印刷品。
编辑:在我发现问题后添加了有问题的行
答案 0 :(得分:3)
你是绝对肯定 X是一个float64数组吗?如果是的话,我希望X [0,0]为0.0,但你会看到0代替,这对我来说就像一个整数..
>>> Xf = arange(10,dtype=float64)
>>> Xi = arange(10)
>>> Xf[0]
0.0
>>> Xi[0]
0
>>> Yf = Xf*0.0
>>> Yf[0]
0.0
>>>
>>> Yf[0] = 1.90897e-14
>>> Yf[0]
1.9089700000000001e-14
>>> Xf[0] = Yf[0]
>>> Xf[0]
1.9089700000000001e-14
>>> Xi[0] = Yf[0]
>>> Xi[0]
0