[問題] 浮點數下的if和等於

作者: sinlin (豆漿)   2012-10-19 22:45:34
do i=1,200
co(i)=-1.005d0+dfloat(i)*0.01d0
! write(*,*) co(i)
if (co(i).eq.(-0.975d0)) write(*,*) i
end do
我的程式片段如上
本來只是懶得手算,想要看一下在i=幾時,會出現co=-0.975
結果if不成立,沒有輸出
好奇之下就列出了所有co來看
發現co的值是-0.9749999999
我以往都沒注意到這種情況!
請問這樣子有沒有什麼簡單的寫法可以避免這種事情發生呢
作者: charlesdc (MoOn)   0000-00-00 00:00:00
判斷一個區間
作者: callmei (挨)   0000-00-00 00:00:00
因為浮點數運算有ROUNDING ERROR
作者: wiki70170 (wiki)   0000-00-00 00:00:00
宣告為單精度REAL*4看看
作者: sinlin (豆漿)   0000-00-00 00:00:00
嗯嗯,ok了,謝謝各位改宣告沒幫助,我把if(co(i)-(-0.975d0).le.0.001d0)

Links booklink

Contact Us: admin [ a t ] ucptt.com