作者m3gl4a (m3gl4)
看板java
標題[問題] 今天的來演講的老師給了一個很傻眼的問題
時間Fri May 15 21:34:33 2015
我自己嘗試寫他的問題看看
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
→ m3gl4a: 為什麼會多個0.0000000002 05/15 21:46
推 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