我的任务是计算黄金比例(phi=(1+sqrt(5((/2(。但我需要用大约50个小数位/小数位来计算,然后将结果四舍五入到30个小数位,并将其打印在控制台上。我被允许使用BigDecimal和MathContext。有人知道怎么计算吗?我现在迷路了。感谢
我不会帮你解决问题!然而,我认为给你一个有希望的方向是看看API:https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html特别是在构造函数处:BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
我相信,如果你用这些物体进行实验,你就能达到你的目标。注意:sqrt仅在Java 9中添加到BigDecimal
中。
祝你好运。
我在网上找到了这个。它可以用来验证您的计算。
String goldenRatio =
"1.61803398874989484820458683436563811772030917980576286213544862270526046281890" +
"244970720720418939113748475408807538689175212663386222353693179318006076672635";
您可以通过验证常规计算的正确性
- 验证长度(不要忘记小数点和整数位数(
- 验证它是否与所提供答案的某个初始部分匹配
为了正常计算,我使用精度为30
和RoundingMode.HALF_UP
的MathContext
。
这可能不符合你的预期。如果你遇到问题,这里的人会帮助你。
不过,我强烈建议你在寻求任何额外帮助之前先尝试一下。