PI nth di git после десятичной - PullRequest
       19

PI nth di git после десятичной

0 голосов
/ 20 февраля 2020

Я хочу создать программу, которая будет возвращать n-е число цифр после десятичного числа в номере PI. Это работает хорошо, если я не ставлю n выше 50. Могу ли я это исправить или Python не разрешить это?

Вот мой код:

pi = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270938521105559644622948954930381964428


def nth_pi_digit(n=input("How many digits after decimal you would like to see?(PI number):  ")):
    try:
        n = int(n)
        if n <= 204:
            return print(format(pi, f".{n}f"))
        else:
            print("Sorry, we have pi with 204 digits after decimal, so we'll print that")
            return print(format(pi, ".204f"))
    except:
        print("You need to put a integer digit")


nth_pi_digit()

Ответы [ 3 ]

4 голосов
/ 20 февраля 2020

Тип данных float имеет ограничение на точность, которую вы можете получить. Примерно 50 цифр.

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

>>> from decimal import Decimal
>>> d = Decimal('3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270938521105559644622948954930381964428')
>>> format(d, ".50f")
'3.14159265358979323846264338327950288419716939937511'
>>> format(d, ".204f")
'3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102709385211055596446229489549303819644280'

Таким образом, вы можете выполнять математические операции без потери точности, что «рассматривать его как строку» не позволяет вам.

1 голос
/ 20 февраля 2020

Вы можете просто использовать текст:

pi = '3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270938521105559644622948954930381964428'

Хотя лучше использовать десятичную.

0 голосов
/ 20 февраля 2020

Создание экземпляра PI как строкового объекта:

pi = '3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270938521105559644622948954930381964428'

И затем вы можете выполнить нарезку, чтобы показать столько десятичных разрядов, сколько вы хотите:

n = 10    # 10 decimals
print(pi[:2+n])
...