同一等式在Fortran 95和Python上返回不同的结果

2024-04-19 09:07:20 发布

您现在位置:Python中文网/ 问答频道 /正文

fortran95中有一个公式用来计算数组的位置,我在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

正如你所看到的,他们完全一样,我不能找出什么是错误的,我可以如何解决这个问题,请帮助我。你知道吗


Tags: 答案代码声明编辑示例粘贴错误评论
2条回答

记住我的FORTRAN。我认为它假设基于变量第一个字母的数据类型,在partiali和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

补充:

有趣的是,在python3.5.3中,e被打印为14056.999999999。你知道吗

The implicit none statement is used to inhibit a very old feature of Fortran that by default treats all variables that start with the letters i, j, k, l, m and n as integers and all other variables as real arguments.

我不能评论,因为声誉不够,所以把它作为我研究的记录。你知道吗

相关问题 更多 >