[問題] 今天的來演講的老師給了一個很傻眼的問題

看板java作者 (m3gl4)時間9年前 (2015/05/15 21:34), 編輯推噓8(805)
留言13則, 11人參與, 最新討論串1/2 (看更多)
我自己嘗試寫他的問題看看 public class doublebug { public static void main(String[] args) { double x=0.5-0.3,y=0.3-0.1; if(x==y) System.out.println("x=y"); else System.out.println("x=/=y"); } } 居然是 x=0.2 y=0.19999999999999998 在人去看無疑是x=y 可是電腦是x=/=y 這到底是什麼魔術 ----- Sent from JPTT on my Foxconn International Holdings Limited M511. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.105.197 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1431696875.A.AF4.html

05/15 21:39, , 1F
05/15 21:39, 1F

05/15 21:46, , 2F
為什麼會多個0.0000000002
05/15 21:46, 2F

05/15 21:54, , 3F
05/15 21:54, 3F

05/16 12:31, , 4F
float/double不要用==去比 你把它當常識學起來吧
05/16 12:31, 4F

05/16 12:31, , 5F
已經有些compiler會把這種==標warning了
05/16 12:31, 5F

05/16 14:27, , 6F
浮點數不能用等號直接比啊
05/16 14:27, 6F

05/17 06:43, , 7F
浮點誤差....
05/17 06:43, 7F

05/17 18:51, , 8F
不就浮點
05/17 18:51, 8F

05/17 21:29, , 9F
不要用十進位去想這棍提,二進位肯定有誤差...
05/17 21:29, 9F

05/18 01:11, , 10F
用2進位表示10進位的問題,這應該是在計概或計組中
05/18 01:11, 10F

05/18 01:12, , 11F
就會解答的.....感覺不適合在java中提出來
05/18 01:12, 11F

05/19 15:02, , 12F
用Bigdecimal
05/19 15:02, 12F

05/23 10:58, , 13F
計概基本常識 ieee754看一下就懂了
05/23 10:58, 13F
文章代碼(AID): #1LLVNhhq (java)
文章代碼(AID): #1LLVNhhq (java)