作者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://webptt.com/m.aspx?n=bbs/java/M.1431696875.A.AF4.html
2F:→ m3gl4a: 為什麼會多個0.0000000002 05/15 21:46
4F:推 Killercat: float/double不要用==去比 你把它當常識學起來吧 05/16 12:31
5F:→ Killercat: 已經有些compiler會把這種==標warning了 05/16 12:31
6F:推 wuliou: 浮點數不能用等號直接比啊 05/16 14:27
7F:推 LaPass: 浮點誤差.... 05/17 06:43
8F:→ felixgugu: 不就浮點 05/17 18:51
9F:推 pupuliao: 不要用十進位去想這棍提,二進位肯定有誤差... 05/17 21:29
10F:→ jengjye: 用2進位表示10進位的問題,這應該是在計概或計組中 05/18 01:11
11F:→ jengjye: 就會解答的.....感覺不適合在java中提出來 05/18 01:12
12F:推 MephistoH: 用Bigdecimal 05/19 15:02
13F:推 micola: 計概基本常識 ieee754看一下就懂了 05/23 10:58