Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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 如何将大浮点数转换为int_Java_Php_Int - Fatal编程技术网

Java 如何将大浮点数转换为int

Java 如何将大浮点数转换为int,java,php,int,Java,Php,Int,我用java和php编写了一个程序。其中循环运行了64次。并继续将n添加到n: Java代码: public static void main(String[] args) { double n = 1; double p = 1; for(int i = 1;i <= 64;i++){ n = n + n; p = p + n; } System.out.println(p); } publicstaticvo

我用
java
php
编写了一个程序。其中
循环
运行了
64次。并继续将
n添加到n

Java代码:

  public static void main(String[] args) {
    double n = 1;
    double p = 1;
    for(int i = 1;i <= 64;i++){
        n = n + n;
        p = p + n;
    }
    System.out.println(p);
}
publicstaticvoidmain(字符串[]args){
双n=1;
双p=1;
对于(inti=1;iJava:Math.round(float),PHP:round(value,precision),您将使用precision

编辑根据您的评论,您确实想要更像-

biginger n=biginger.ONE;
BigInteger p=BigInteger.0;
BigInteger二=新的BigInteger(“2”);

对于(int i=1;i该数字太大,无法放入
long
中。要获得最接近的整数近似值,请通过
BigDecimal
double
转换为
biginger

BigDecimal bd = BigDecimal.valueOf(p);
BigInteger bi = bd.toBigInteger();
但是,要获得准确的结果,请使用大整数执行所有计算:

import static java.math.BigInteger.ONE;

BigInteger n = ONE;
BigInteger p = ONE;
for (int i = 1; i <= 64; i++) {
    n = n.add(n);
    p = p.add(n);
}
System.out.println(p);

为什么首先对n和p使用double?也许你指的是long?请看。另外,如果超过64位long可以存储的长度,你可以使用java.math.biginger。但同样,这是整数加法。我相信,你可以使用java中的casting来转换它,但最简单的方法是,正如@demongolem所建议的,首先使用正确的类型。3.7*10^19远远超出了整数的范围。您想要什么输出?@demongolem如果我使用long而不是double,它会以
-1
@ajb的形式输出。我还在上高中。我的年龄只有(16岁)。;:)您如何确保这是准确的。因为计算是用任意精度的整数完成的,所以不可能出现溢出。@mega6382请参见问题。
36893488147419103231
BigInteger n = BigInteger.ONE;
BigInteger p = BigInteger.ZERO;
BigInteger TWO = new BigInteger("2");
for (int i = 1; i <= 64; i++) {
    StringBuilder sb = new StringBuilder();
    sb.append("For square #: " + i);
    sb.append(", Grains on square: " + n);
    p = p.add(n);
    n = n.multiply(TWO);
    sb.append(", Running Total: " + p);
    System.out.println(sb.toString());
}
BigDecimal bd = BigDecimal.valueOf(p);
BigInteger bi = bd.toBigInteger();
import static java.math.BigInteger.ONE;

BigInteger n = ONE;
BigInteger p = ONE;
for (int i = 1; i <= 64; i++) {
    n = n.add(n);
    p = p.add(n);
}
System.out.println(p);
36893488147419103000
36893488147419103231