计算功率的输出错误

时间:2014-02-25 12:03:19

标签: java

我有以下代码。

import java.util.ArrayList;
import java.math.*;
import java.util.Arrays;
import java.util.Collections;

public class Dummy {
    public static void main(String args[]) throws Exception {


    int n=12;
    double val=(3+Math.sqrt(5));

    double ne=Math.pow(val, n);

    String new2=String.valueOf(ne);
    System.out.println(ne);
    String[] new1=new2.split("\\.");

    if(new1[0].length()>3){
        new1[0]=new1[0].substring(Math.max(new1[0].length() - 4, 0));
         if(new1[0].length()<3){
                new1[0]=("0").concat(new1[0]);
            }
         else{
             new1[0]=new1[0];
         }
    }
    else if(new1[0].length()<2){
        new1[0]=("00").concat(new1[0]);
    }
    else if(new1[0].length()<1){
        new1[0]=("000").concat(new1[0]);
    }


    else if(new1[0].length()<3){
        new1[0]=("0").concat(new1[0]);
    }
    System.out.println(new1[0]);
    }

}

这里我正在尝试计算sum of 3 with root 5 and whole to power of 12

(3+sqrt(5))^12

当我这样做时,我得到的结果是4.246814719604947E8,但实际上答案是424681471.960494。请告诉我哪里出错了。

4 个答案:

答案 0 :(得分:2)

这是科学记数法。

如果您不想使用此表示法,可以尝试

public static void main(String[] args) {
    Double d = Math.pow(3+Math.sqrt(5),12);
    System.out.println(d); //4.246814719604947E8
    System.out.println(new BigDecimal(d).toPlainString()); //424681471.960494697093963623046875
}

答案 1 :(得分:1)

你在答案中注意到了E8吗?那么答案是正确的:)

答案 2 :(得分:1)

你得到的答案是正确的。

4.246814719604947E8表示4.246814719604947乘以10 ^ 8。如果将小数点向右移动8位,则会看到您期望的答案。

答案 3 :(得分:1)

使用它 System.out.println(String.format(“%f”,ne));