我的任务是计算黄金比例 (phi = (1+ sqrt(5))/2)。但是我需要用大约 50 个小数位/小数位来计算它,然后将结果四舍五入到 30 个小数位并在控制台上打印出来。我可以使用 BigDecimal 和 MathContext。有谁知道如何计算它?我现在迷路了。谢谢
user12438414
问问题
140 次
2 回答
3
我不会试图为你解决你的问题!但是,我认为向您指出一个有希望的方向是查看 API:
https ://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html
,特别是构造函数:
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
I相信如果您尝试使用这些对象,您就可以实现您的目标。注意: sqrt 仅BigDecimal
在 Java 9 中添加。
祝你好运。
于 2020-04-29T22:59:38.327 回答
2
我在网上找到了这个。它可用于验证您的计算。
String goldenRatio =
"1.61803398874989484820458683436563811772030917980576286213544862270526046281890" +
"244970720720418939113748475408807538689175212663386222353693179318006076672635";
您可以通过以下方式验证常规计算的正确性
- 验证长度(不要忘记小数点和整数位)。
- 验证它是否与提供的答案的某些初始部分匹配。
为了正常计算,我使用MathContext
了 precision =30
和RoundingMode.HALF_UP
.
这可能不适用于您预期的方式。如果您遇到问题,这里的人将能够提供帮助。
我强烈建议您在寻求任何其他帮助之前发布尝试。
于 2020-04-30T00:07:55.457 回答