Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 95和Python上的相同等式返回不同的结果_Python_Python 2.7_Fortran_Numbers - Fatal编程技术网

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

Fortran 95和Python上的相同等式返回不同的结果,python,python-2.7,fortran,numbers,Python,Python 2.7,Fortran,Numbers,Fortran 95中有一个公式用于计算数组的位置,我在Python中复制并粘贴了相同的公式,但它们返回的结果不同 编辑: 在匆忙寻找答案时,我忘了显示变量的声明,但它们现在在Fortran代码示例中。事实证明,这个声明就是问题所在,多亏了@SurestTexas和@albert在评论中指出了这一点,还有其他所有提供帮助的人 Fortran中的方程式: integer(2) :: i, j integer(4) :: e, n_x n_x = 1162 j = ((-2.8 - (-8.4))

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


正如您所看到的,它们完全相同,我无法找出问题所在以及如何解决问题,请帮助我。

记住我的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)

这让我想起了我的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个副刊:

有趣的是,在Python 3.5.3中,e打印为14056.999999999

由于声誉不足,我无法发表评论,因此请将其作为我研究的记录予以答复。

补充:

有趣的是,在Python 3.5.3中,e打印为14056.999999999



由于声誉不好,我无法发表评论,因此请将其作为我的研究记录填写在回答中。

您是否尝试打印操作每个部分的结果以确定问题?如果是这样的话,你还没有提到它(或者你自己解决这个问题的任何努力)。Fortran中使用的变量的数据类型是什么,我认为I,j是整数。在Fortran代码中始终使用
隐式无
。发布时,请制作一个MWE,以便我们可以复制您的结果。这可能是您在python中的划分。请参阅@SurestTexas,我尝试过,即使它们返回不同的结果。正如albert提到的,i和j是整数,我想这就是问题所在,我想我可以根据你和albert给我的提示来解决它。谢谢。谢谢,@albert。您是否尝试打印操作每个部分的结果以确定问题?如果是这样的话,你还没有提到它(或者你自己解决这个问题的任何努力)。Fortran中使用的变量的数据类型是什么,我认为I,j是整数。在Fortran代码中始终使用
隐式无
。发布时,请制作一个MWE,以便我们可以复制您的结果。这可能是您在python中的划分。请参阅@SurestTexas,我尝试过,即使它们返回不同的结果。正如albert提到的,i和j是整数,我想这就是问题所在,我想我可以根据你和albert给我的提示来解决它。谢谢。谢谢,@albert。请原谅我自得其乐——我已经40年没有认真学习FORTRAN了。这只有在隐式输入有效的情况下才是真的。但是,对于Fortran 95及更高版本来说,这是非常不可取的。人们通常使用
隐式none
。这就是为什么通常需要实数并且必须包含所有声明。但是在任何编程语言中,名为
i
j
的变量都可能声明为整数。如果我说是声明的,那么显然在声明类型的编程语言中。。。在其他情况下,任何理智的程序员都应该使用名称
i
j
作为整数值的参考,否则将面临后果。@VladimirF我很抱歉没有在解释中包含完整的示例,我不习惯在这里提问。请原谅我自得其乐——我已经40年没有认真学习FORTRAN了。只有在隐式输入有效的情况下才是这样。但是,对于Fortran 95及更高版本来说,这是非常不可取的。人们通常使用
隐式none
。这就是为什么通常需要实数并且必须包含所有声明。但是在任何编程语言中,名为
i
j
的变量都可能声明为整数。如果我说是声明的,那么显然在声明类型的编程语言中。。。在其他情况下,任何理智的程序员都应该使用名称
i
j
作为整数值的参考,否则将面临后果。@VladimirF我很抱歉没有在解释中包含完整的示例,我不习惯在这里提问。