[問題] 有關double precision運算式

作者: ttjhninn (Cream)   2015-09-15 02:03:31
hello各位 不好意思又要打擾大家一下了
上次所發問的問題小弟仍然無法完全了解當中出錯的原因
索性直接舉出一段code希望大家可以給些意見
implicit none
double precision x,y,r,s
x=28.4d+00
y=16.5d+00
r=(y-x)*10.0d+00
s=(y+x)*10.0d+00
print*,r,int(r),s,int(s)
end
print出來的數字為:
-119.000000000000 -118 449.00000000000000 449
我已經很明確給予xy值了,照理說應該不會有所謂的x-y=-118.999999999這類的數字,有人可以提供一下經驗嗎?
作者: gilocustom   2015-09-15 02:19:00
輸出r的時候小數點以下多顯示個幾位數,你會有驚喜。先別管這些了,你~有聽過浮點數嗎?
作者: ttjhninn (Cream)   2015-09-15 02:30:00
怎麼多輸出後面幾個數字?另外這不是double precision嘛?不是代表只提供16的位子存放數字,怎麼還會有後面幾位?謝謝G大,我大概知道是什麼原因了
作者: blc (Anemos)   2015-09-15 12:00:00
FYI,gfortran是-118.9999999~14位

Links booklink

Contact Us: admin [ a t ] ucptt.com