我有以下代码。
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
。请告诉我哪里出错了。
答案 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));