作者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/cn.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