我決定在這裏發帖,因爲我正在用我的fortran90代碼面對一個非常奇怪的麻煩。 事實上,我宣佈雙精度變量,即:Fortran問題0 + 0不等於0
double precision, dimension(-1:20,-1:20) :: a,b,c
然後我初始化所有變量到零,
a(:,:) = 0.d0
b(:,:) = 0.d0
c(:,:) = 0.d0
最後,我做我的計算,
a(1:17,2:18) = a(1:17,2:18) + b(1:17,2:18) + 0.5d0*c(1:17,2:18)
我檢查了每變量,並且在計算之前它們全部等於零,但是然後我獲得,
abs(maxval(a(1:17,2)) - minval(a(1:17,2))) = 4.336808689942018E-019
這沒有任何意義,但我不知道問題來自哪裏,有人可以幫我解決這個問題嗎?
問候
PS:我使用ifort有以下選項:「-O3 -xHost -vec-report0 -implicitnone -warn truncated_source -warn argument_checking -warn未使用-warn聲明-warn路線-warn ignore_loc -warn usage -check nobounds -ftz「
可能重複(http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – 2014-12-03 11:02:34
或者:https://開頭計算器.com/questions/21895756 /爲什麼是浮點數 - 不準確 – 2014-12-03 11:03:59
如果你可以將它轉換成一個複製/粘貼的可編譯的例子,這將是有用的。但我無法使用推斷程序進行復制。 – francescalus 2014-12-03 11:41:01