gpt4 book ai didi

Java - long 显示错误值

转载 作者:行者123 更新时间:2023-12-01 16:56:55 25 4
gpt4 key购买 nike

我必须创建一个从 1 到 100 的程序,并计算除以 4 剩下的 0、1、2、3 得到的数字的单独乘积,所以基本上我必须计算 4 个不同的乘积。

我尝试用两种方法解决这个问题,两种方法都显示错误的结果:

第一次尝试:

    public class prodmod4 {
public static void main(String[] args){
int i, k=0;
long P=1;
while(k<4){
for(i=1;i<=100;i++){
if(i%4==k){
P=P*i;
}
}
System.out.printf("Produsul numerelor care au restul %d este: %d\n", k, P);
i=1;
P=1;
k++;
}
}
}

当我运行这个程序时,它给我:

The product of numbers with rest 0 is 0, rest 1 -6661643765781265135, rest 2 -2885954222765899776, rest 3 -9150527387120197261

第二次尝试:

public class prodmod4v2 {
public static void main(String[] args){
int i;
long zero=1, unu=1, doi=1, trei=1;
for(i=1;i<=100;i++){
switch(i%4){
case 0:
zero=zero*i;
break;
case 1:
unu=unu*i;
break;
case 2:
doi=doi*i;
break;
case 3:
trei=trei*i;
break;
default:
break;
}
}
System.out.printf("produsul numerelor care au resturile 0,1,2,3 sunt:\n zero:%d\n unu:%d\n doi:%d\n trei:%d\n", zero, unu, doi, trei);
}
}

当我运行此命令时,我得到与第一次尝试相同的输出。

提前谢谢您!

最佳答案

你的数字对于仅仅 long 来说太大了,支持最大 2^63 - 1 的数字。发生这种情况时,结果为 overflow - 这意味着结果不是您所期望的。要解决这个问题,您必须使用支持更大数字的东西,例如 BigIntegerBigDecimal .

关于Java - long 显示错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31416987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com