class test{
public static void main(String... args){
double d=5.637;
System.out.println("double is:"+d);
long a=(long)d;
System.out.println("long is:"+a);
}
}
上述代码的输出为long is : 5
,符合预期。
但是当我运行以下代码时:
class test{
public static void main(String... args){
double d=12345678901234567890.637;
System.out.println("double is:"+d);
long a=(long)d;
System.out.println("long is:"+a);
}
}
输出不符合预期。结果是long is:9223372036854775807
我想问一下为什么当我把双数字庞大的时候发生。
答案 0 :(得分:1)
对于最安全的施法你应该使用Math.round(d)
并且最大长度是9,223,372,036,854,775,807你试图将更大的双倍值加到长
编辑:您可以使用BigInteger而不是Long