Java 如何计算高于限制的数字,并使用BigInteger
下面的代码计算2^15和工作的数字之和。如果我将循环条件更改为15,d2将变为2^16。-->我要2^15。 然后我把它改成999,数字之和不匹配。(总数:1189) 还有别的办法吗Java 如何计算高于限制的数字,并使用BigInteger,java,biginteger,Java,Biginteger,下面的代码计算2^15和工作的数字之和。如果我将循环条件更改为15,d2将变为2^16。-->我要2^15。 然后我把它改成999,数字之和不匹配。(总数:1189) 还有别的办法吗 public void go() { int sum = 0; BigInteger d2 = BigInteger.ONE.add(BigInteger.ONE); BigInteger two = d2; for(int i = 0; i < 14;
public void go()
{
int sum = 0;
BigInteger d2 = BigInteger.ONE.add(BigInteger.ONE);
BigInteger two = d2;
for(int i = 0; i < 14; i++)
{
System.out.println(d2);
d2 = d2.multiply(two);
}
System.out.println("\n" + d2);
double val = d2.doubleValue();
double temp = val;
while(val > 0)
{
temp = val % 10;
val /= 10;
sum += temp;
System.out.println(temp);
}
System.out.println("Sum: " + sum);
}
public void go()
{
整数和=0;
biginger d2=biginger.ONE.add(biginger.ONE);
大整数2=d2;
对于(int i=0;i<14;i++)
{
系统输出打印项次(d2);
d2=d2.乘(二);
}
系统输出打印项次(“\n”+d2);
double val=d2.doubleValue();
双温=val;
while(val>0)
{
温度=val%10;
val/=10;
总和+=温度;
系统输出打印项次(温度);
}
System.out.println(“总和:+Sum”);
}
您可以切换到double
来计算数字之和,而这看起来正是您所需要的
你会得到如下结果:
temp = d2;
while (temp.compareTo(BigInteger.ZERO) > 0) {
BigInteger[] divideAndRemainder = temp.divideAndRemainder(BigInteger.valueOf(10));
temp = divideAndRemainder[0];
sum = sum.add(divideAndRemainder[1]);
}
您应该继续使用
BigDecimal
而不是使用double
,并且根据您正在做的事情(没有尝试得到这个想法),sum
可能也需要是一个。