看板 java 關於我們 聯絡資訊
我自己嘗試寫他的問題看看 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
qrtt1: http://bit.ly/1Fij4PG 05/15 21:39
m3gl4a: 為什麼會多個0.0000000002 05/15 21:46
LPH66: http://0rz.tw/3450A 05/15 21:54
Killercat: float/double不要用==去比 你把它當常識學起來吧 05/16 12:31
Killercat: 已經有些compiler會把這種==標warning了 05/16 12:31
wuliou: 浮點數不能用等號直接比啊 05/16 14:27
LaPass: 浮點誤差.... 05/17 06:43
felixgugu: 不就浮點 05/17 18:51
pupuliao: 不要用十進位去想這棍提,二進位肯定有誤差... 05/17 21:29
jengjye: 用2進位表示10進位的問題,這應該是在計概或計組中 05/18 01:11
jengjye: 就會解答的.....感覺不適合在java中提出來 05/18 01:12
MephistoH: 用Bigdecimal 05/19 15:02
micola: 計概基本常識 ieee754看一下就懂了 05/23 10:58