Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中数字2^1000的位数之和 import java.math.*; 公共类PowerDigitSum{ 公共静态void main(字符串[]args){ 双[]位; 数字=新的双精度[302]; 双i=数学功率(21000); 双c=301; 双c1=0; 双d=0; 而(c>=0){ c1=数学功率(10,c); d=数学楼层(i/c1); i=i-d*c1; 数字[(int)c]=(int)d; c=c-1; } 双和=0; c=0; 而(c_Java - Fatal编程技术网

java中数字2^1000的位数之和 import java.math.*; 公共类PowerDigitSum{ 公共静态void main(字符串[]args){ 双[]位; 数字=新的双精度[302]; 双i=数学功率(21000); 双c=301; 双c1=0; 双d=0; 而(c>=0){ c1=数学功率(10,c); d=数学楼层(i/c1); i=i-d*c1; 数字[(int)c]=(int)d; c=c-1; } 双和=0; c=0; 而(c

java中数字2^1000的位数之和 import java.math.*; 公共类PowerDigitSum{ 公共静态void main(字符串[]args){ 双[]位; 数字=新的双精度[302]; 双i=数学功率(21000); 双c=301; 双c1=0; 双d=0; 而(c>=0){ c1=数学功率(10,c); d=数学楼层(i/c1); i=i-d*c1; 数字[(int)c]=(int)d; c=c-1; } 双和=0; c=0; 而(c,java,Java,由于双值的有限性,你无法对其进行正确的计算 您可能可以使用BigDecimal修复代码,但使用biginger要容易得多。提示:它有一个pow方法,您可以计算从到字符串的数字和由于双值的有限性,无法对其进行正确的计算 您可能可以使用bigdecime修复代码,但使用biginger要容易得多。提示:它有一个pow方法,您可以计算从到字符串的数字和由于双值的有限性,无法对其进行正确的计算。请使用bigdecime,或在您的cas中使用e BigInteger就足够了。@deHaar,为什么?这不是

由于双值的有限性,你无法对其进行正确的计算


您可能可以使用
BigDecimal
修复代码,但使用
biginger
要容易得多。提示:它有一个
pow
方法,您可以计算从
到字符串的数字和

由于双值的有限性,无法对其进行正确的计算


您可能可以使用
bigdecime
修复代码,但使用
biginger
要容易得多。提示:它有一个
pow
方法,您可以计算从
到字符串的数字和

由于双值的有限性,无法对其进行正确的计算。请使用bigdecime,或在您的cas中使用e BigInteger就足够了。@deHaar,为什么?这不是一个很难计算的数字,您只需要大约1000位来存储它(如果愿意,可以使用uint1000),将最高有效位设置为1,其余的设置为0,这样就可以了。@M.Prokhorov它对于简单的数据类型来说太大了…将它们存储在位中当然可以…但是更正:注释是不合格的。@ernest_k更具可读性:
BigInteger.TWO.pow(1000).toString().chars().map(c->c-'0').sum()
Thread on code Review关于同一个问题:由于双精度值的有限性,您无法对其进行正确的计算。使用BigDecimal,或者在您的情况下使用BigInteger就足够了。@deHaar,为什么?这不是一个很难计算的数字,您只需要大约1000位来存储它(如果愿意,请使用uint1000),将最高有效位设置为1,其余的设置为0,这样就可以了。@M.Prokhorov它对于简单的数据类型来说太大了…将它们存储在位中当然可以…但是更正:注释是不合格的。@ernest_k更具可读性:
BigInteger.TWO.pow(1000).toString().chars().map(c->c-'0').sum()
关于同一个问题的代码审查线程:我不知道Project Euler的目标是什么,但使用BigInteger库是否存在欺骗行为?at的已接受答案也使用BigInteger,所以…我不知道Project Euler的目标是什么,但使用BigInteger库是否存在欺骗行为?at的已接受答案也使用BigInteger,所以。。。
import java.math.*;

public class PowerDigitSum {
    public static void main(String[] args) {
        double[] digits ;
        digits = new double[302];
        double i = Math.pow(2, 1000);
        double c = 301;
        double c1 = 0;
        double d = 0;
        while(c>=0) {
            c1 = Math.pow(10, c);
            d = Math.floor(i/c1);
            i = i - d*c1;
            digits[(int)c] = (int)d;
            c = c-1;
        }
        double sum = 0;
        c = 0;
        while (c<302) {
            sum = sum+digits[(int)c];
            c= c+1;
        }
        System.out.println(sum);
    }
}