方法一
- 通过观察分析发现,可以将黄金数化为求斐波那契数列相邻两项的比值,那么到底求多少项呢?当然是越多越精确,
n/(n+1) 项,n 越往上增加,这个比值的小数点后 101 位越是稳定。 double 无法表示 100 位小数,得需要 BigInteger 和 BigDecimal 。
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
BigInteger a = new BigInteger("1");
BigInteger b = new BigInteger("1");
for (int i = 0; i < 400; i++) {
BigInteger c = a.add(b);
a = b;
b = c;
}
System.out.println(new BigDecimal(a).divide(new BigDecimal(b),100,RoundingMode.HALF_UP));
scan.close();
}
}
scan.close(); } }
|