【发布时间】:2020-02-03 09:28:49
【问题描述】:
我已经开始阅读 Java8 的文档并尝试了不同的示例代码。发现以下奇怪的行为。
样本1
Double di = new Double(Math.pow(2,32-1));
System.out.printf("%f\n",di.doubleValue()); //2147483648.000000
int a= di.intValue();
System.out.println(a); //2147483647
样本2
Double di = new Double(Math.pow(2,32-1)) - 1.0;
System.out.printf("%f\n",di.doubleValue()); //2147483647.000000
int a= di.intValue();
System.out.println(a); //2147483647
为什么在这两种情况下,int 值都返回相同的值?
【问题讨论】:
-
试试
System.out.println(Integer.MAX_VALUE);...现在试试System.out.println(Integer.MAX_VALUE + 1);- 你想从那个有效的结果中得到哪个结果?
标签: java type-conversion int range double