0x7FFFFFFF == (int)(0x7FFFFFFF * 2.0)
在打印这个语句的时候,编译器给出的答案是true
System.out.println((int)(0x7FFFFFFF * 2.0) == (int)(0x7FFFFFFF * 2));
System.out.println((int)(0x7FFFFF * 2.0) == (int)(0x7FFFFF * 2));
而这两个语句java给出的分别为false和true。
我所知道的只是当double型等于或超过int的最大值,再做int处理后,就会等于最大值。但是具体的原因却不是很清楚,不知道各位大侠能不能从编译器的算法上给我一个解释?谢谢啦~