Fortran 95中有一个等式来计算数组的某个位置,我在Python中复制并粘贴了相同的等式,但它们会返回不同的结果。
修改 急于回答,我忘了显示变量的声明,但现在它们在Fortran代码示例中。事实证明,声明是问题,感谢@SurestTexas和@albert在评论中指出它,以及其他所有帮助过的人。
Fortran中的等式:
integer(2) :: i, j
integer(4) :: e, n_x
n_x = 1162
j = ((-2.8 - (-8.4)) / 0.05) + 1
i = ((-4.5 - (-5.1)) / 0.05) + 1
e = ((i-1)*n_x+j)
我打印e
,结果是:12894
在Python中:
n_x = 1162
j = ((-2.8 - (-8.4)) / 0.05) + 1
i = ((-4.5 - (-5.1)) / 0.05) + 1
e = ((i-1)*n_x+j)
我打印e
,结果是:14057.0
正如您所看到的,它们完全相同,我无法找出问题所在以及如何解决问题,请帮助我。
答案 0 :(得分:2)
记住我的FORTRAN。我认为它假设数据类型基于变量的第一个字母,在partilar i和j将是整数所以在Python中模拟这个我做了:
n_x = 1162
j = int(((-2.8 - (-8.4)) / 0.05) + 1)
i = int(((-4.5 - (-5.1)) / 0.05) + 1 )
e = ((i-1)*n_x+j)
这给了我12895
答案 1 :(得分:2)
补充:
有趣的是,在Python 3.5.3中,e打印为14056.99999999999。
由于声誉不足,我无法发表评论,因此请将其作为我的研究记录添加到答案中。