int num1 = 1024;
System.out.println("num1 = " + num1);
int num2 = 1024 * 1024;
System.out.println("num2 = " + num2);
int num3 = 1024 * 1024 * 1024;
System.out.println("num3 = " + num3);
int num4 = 1024 * 1024 * 1024 * 1024;
System.out.println("num4 = " + num4); // 0 ??超了int范围
double d = 1024d * 1024 * 1024 * 1024;
System.out.println("d = " + d);
double dw = 1024 * 1024 * 1024 * 1024 ;
System.out.println("dw = " + dw); // 0.0 ??没超double范围
1024*1024*1024*1024=0?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
檀越@新空间 2024-03-01 13:02关注鱼悠奕 下午好🌅🌅🌅
本答案参考通义千问你的代码中,
int类型的变量num4在计算后结果超过了int类型的最大值,所以会自动转换为int的最大值(在Java中是Integer.MAX_VALUE,等于2147483647),然后变成0。这是因为当一个int超出其范围时,它会被"截断"到该范围内的最大值。同样地,
double类型的变量dw也存储了这个大数值,但是由于double类型可以表示更大的范围,所以它不会变成0,而是保留了这个数值,大约是1073741824。解决方案如下:
- 使用
long类型存储大数值:long类型可以存储比int更大的整数,不会溢出。
int num1 = 1024; System.out.println("num1 = " + num1); int num2 = 1024 * 1024; System.out.println("num2 = " + num2); int num3 = 1024 * 1024 * 1024; System.out.println("num3 = " + num3); // 使用 long 存储 num4 long num4 = 1024 * 1024 * 1024 * 1024; System.out.println("num4 (long) = " + num4); // 输出大数值 double d = 1024d * 1024 * 1024 * 1024; System.out.println("d = " + d); double dw = 1024 * 1024 * 1024 * 1024; System.out.println("dw = " + dw); // 输出大数值- 如果你需要精确地表示这个数值,可以使用
BigInteger类,它专门用来处理大整数。
import java.math.BigInteger; int num1 = 1024; System.out.println("num1 = " + num1); int num2 = 1024 * 1024; System.out.println("num2 = " + num2); int num3 = 1024 * 1024 * 1024; System.out.println("num3 = " + num3); // 使用 BigInteger 存储 num4 BigInteger num4 = BigInteger.valueOf(1024 * 1024 * 1024 * 1024); System.out.println("num4 (BigInteger) = " + num4); // 输出大数值这样,
num4和dw就不会显示为0或0.0了。本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用- 使用