簡體   English   中英

Fortran 95和Python上的相同方程式返回不同的結果

[英]Same equation on both Fortran 95 and Python return different results

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。 我認為它假定數據類型基於變量的第一個字母,特別是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

補充:

有趣的是,在Python 3.5.3中,e打印為14056.99999999999。

隱式none語句用於禁止Fortran的一項非常老的功能,該功能默認情況下會將以字母i,j,k,l,m和n開頭的所有變量視為整數,並將所有其他變量視為實參。

由於聲譽不足,我無法發表評論,因此請將其放在“答案”中作為我的研究記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM