java一到一百的数相乘积结果_为什么Java认为从10到99的所有数字的乘积都是0?...

Java程序中,从10到99的整数乘积出现0,原因是整数溢出。在32位系统中,当数值超过Integer.MAX_VALUE时,会回绕到Integer.MIN_VALUE,导致结果错误。通过使用BigDecimal避免溢出,正确结果应为一个非常大的数值。
摘要由CSDN通过智能技术生成

问题

以下代码块将输出设为0。

public class HelloWorld{

public static void main(String []args){

int product = 1;

for (int i = 10; i <= 99; i++) {

product *= i;

}

System.out.println(product);

}

}

有人可以解释为什么会这样吗?

#1 热门回答(424 赞)

以下是该计划在每个步骤中的作用:

1 * 10 = 10

10 * 11 = 110

110 * 12 = 1320

1320 * 13 = 17160

17160 * 14 = 240240

240240 * 15 = 3603600

3603600 * 16 = 57657600

57657600 * 17 = 980179200

980179200 * 18 = 463356416

463356416 * 19 = 213837312

213837312 * 20 = -18221056

-18221056 * 21 = -382642176

-382642176 * 22 = 171806720

171806720 * 23 = -343412736

-343412736 * 24 = 348028928

348028928 * 25 = 110788608

110788608 * 26 = -1414463488

-1414463488 * 27 = 464191488

464191488 * 28 = 112459776

112459776 * 29 = -1033633792

-1033633792 * 30 = -944242688

-944242688 * 31 = 793247744

793247744 * 32 = -385875968

-385875968 * 33 = 150994944

150994944 * 34 = 838860800

838860800 * 35 = -704643072

-704643072 * 36 = 402653184

402653184 * 37 = 2013265920

2013265920 * 38 = -805306368

-805306368 *

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值