思路:根据题意,我们可以推出来这个黄金分数的前几项是1,1/2,2/3,3/5…可以发现是斐波那契数列相除。打表找出是哪两项相除,然后再用java大数高精度去做就可以了。注意一点:题目给的小数点后的那几个数,是四舍五入之后的,这样我们在找的时候需要四舍五入,不能因为前几项符合就行。
import java.math.BigDecimal;
import java.math.BigInteger;
public class Main {
public static void main(String[] args){
BigInteger a=BigInteger.ONE;//ONE:BigInteger 的常量 1。
BigInteger b=BigInteger.ONE;
for(int i=3;i<500;i++){
//迭代
BigInteger t= b;
b=a.add(b);//b=a+b
a=t;
}
BigDecimal divide=new BigDecimal(a,110).divide(new BigDecimal(b,110),BigDecimal.ROUND_HALF_DOWN);//四色五入:ROUND_HALF_DOWN
System.out.println(divide.toPlainString().substring(0,103));//截到小数点后101位,再四舍五入
}
}
努力加油a啊,(o)/~