看板 Fortran 關於我們 聯絡資訊
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 我以往都沒注意到這種情況! 請問這樣子有沒有什麼簡單的寫法可以避免這種事情發生呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 148.81.47.89
charlesdc:判斷一個區間 10/20 05:40
callmei:因為浮點數運算有ROUNDING ERROR 10/21 03:32
wiki70170:宣告為單精度REAL*4看看 10/25 16:44
sinlin:嗯嗯,ok了,謝謝各位 10/29 23:46
sinlin:改宣告沒幫助,我把if(co(i)-(-0.975d0).le.0.001d0) 10/29 23:51