[问题] 今天的来演讲的老师给了一个很傻眼的问题

楼主: 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