расчет золотого сечения с точностью - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть задача рассчитать золотое сечение (phi = (1+ sqrt (5)) / 2). Но мне нужно вычислить его примерно с 50 десятичными цифрами / десятичными разрядами, а затем округлить результат до 30 десятичных цифр и распечатать его на консоли. Мне разрешено использовать BigDecimal и MathContext. У кого-нибудь есть идеи, как его рассчитать? Я потерян прямо сейчас. Спасибо

Ответы [ 2 ]

3 голосов
/ 30 апреля 2020

Я нашел это в Интернете. Он может быть использован для проверки ваших расчетов.

String goldenRatio = 
"1.61803398874989484820458683436563811772030917980576286213544862270526046281890" +
"244970720720418939113748475408807538689175212663386222353693179318006076672635";

Правильность регулярного вычисления можно проверить с помощью

  • Проверка длины (не забывайте десятичную точку и целые числа).
  • проверка того, что он соответствует некоторой начальной части предоставленного ответа.

Для нормального вычисления я использовал MathContext точности = 30 и RoundingMode.HALF_UP.

Это может не сработать так, как вы ожидаете. Если вы столкнетесь с проблемами, люди здесь смогут помочь.

Я настоятельно рекомендую вам опубликовать попытку, прежде чем обращаться за дополнительной помощью.

3 голосов
/ 30 апреля 2020

Я не буду пытаться решить вашу проблему для вас! Однако я думаю, что указать вам в многообещающем направлении было бы посмотреть на API: https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html и, в частности, на конструктор: BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) Я считаю, что если вы экспериментируете с этими объектами, вы можете достичь своей цели , Примечание: sqrt был добавлен только к BigDecimal в Java 9.

Удачи.

...