![](/img/trans.png)
[英]Why does the same logical equation return 2 different results in python and c++?
[英]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.