我正在尝试从“不耐烦的Java核心”中解决以下问题-
“当您将一个double转换为大于可能的最大int值的int时,会发生什么?”
代码:
package ch01.sec01;
import java.util.Random;
public class Exercise_5{
public static void main(String[] args){
int max = 10000;
int min = 1000;
Random rand = new Random();
double randomDouble = Integer.MAX_VALUE + rand.nextInt((max - min) + 1);
System.out.println("randomDouble: " +randomDouble);
int intFromDouble = (int)randomDouble;
System.out.println("intFromDouble: " +intFromDouble);
}
}
输出:
randomDouble: -2.147475257E9
intFromDouble: -2147475257
我想知道为什么randomDouble取负值,因为primitve double的范围比原始int的范围大,因此应该没有溢出问题,而获得比Integer.MAX_VALUE大的double的正确方法是什么?
呼如林
红糖糍粑
相关分类