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

作者: m3gl4a (m3gl4)   2015-05-15 21:34:33
我自己嘗試寫他的問題看看
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
這到底是什麼魔術
作者: qrtt1 (有些事,有時候。。。)   2015-05-15 21:39:00
作者: m3gl4a (m3gl4)   2015-05-15 21:46:00
為什麼會多個0.0000000002
作者: LPH66 (-6.2598534e+18f)   2015-05-15 21:54:00
作者: Killercat (殺人貓™)   2015-05-16 12:31:00
float/double不要用==去比 你把它當常識學起來吧已經有些compiler會把這種==標warning了
作者: wuliou (wuliou)   2015-05-16 14:27:00
浮點數不能用等號直接比啊
作者: LaPass (LaPass)   2015-05-17 06:43:00
浮點誤差....
作者: felixgugu (felix)   2015-05-17 18:51:00
不就浮點
作者: pupuliao (pupu)   2015-05-17 21:29:00
不要用十進位去想這棍提,二進位肯定有誤差...
作者: jengjye (建)   2015-05-18 01:11:00
用2進位表示10進位的問題,這應該是在計概或計組中就會解答的.....感覺不適合在java中提出來
作者: MephistoH (默非斯托)   2015-05-19 15:02:00
用Bigdecimal
作者: micola (Logical way)   2015-05-23 10:58:00
計概基本常識 ieee754看一下就懂了

Links booklink

Contact Us: admin [ a t ] ucptt.com