나는 Python 3.3.2에서 pi를 계산하는 프로그램을 만들었습니다. (재미도 조금 있지만, 내장 된 pi는 사용하고 싶지 않습니다.) 그것은 잘 작동 - 그것은 pi의 올바른 값을 소수점 이하 7 자리 가져옵니다. 그러나 일단이 점에 도달하면 프로그램은 계속되지만 값은 변하지 않습니다. 나는 decimal.Decimal를 사용하여 시도했지만 작동하지 않습니다 - 그것은 다음과 같은 오류와 함께 제공 : 내 작업 코드 (. 대신 소수의 수레를 사용) 난 단지 실제 알고리즘을 포함했다내 프로그램이 "중지"된 이유는 무엇입니까?
TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'
입니다 :
pi=float(3)
a=2
b=0
c=float(0)
while 1==1:
b=a*(a+1)*(a+2)
c=4/b
pi=pi+c
print(str(pi))
a=a+2
b=a*(a+1)*(a+2)
c=4/b
pi=pi-c
print(str(pi))
a=a+2
그리고 이것은 결과입니다 이 http://i.imgur.com/y0qgBMB.png
프로그램이 실제로는이보다 훨씬 이전에 작동이 중지 있습니다 (죄송합니다, 제가 직접 이미지를 게시 할 수있는 충분한 명성을하지 않는다), 그냥 왼쪽 거기에 잠시 동안. 제가 사용하고있는 알고리즘이 더 많은 소수점 이하 자리수를 찾을 수 있다는 것을 알고 있습니다. 누군가가 왜 작동하지 않는지 알려주고 가능한 해결책을 제시 할 수 있습니까? 파이썬을 너무 좋아하지 않는다는 것을 제 코드의 단순함에서 알 수 있듯이, 제가 학교에서 배운 기본 지식 만 있습니다. 간단한 솔루션을 많이 주시면 감사하겠습니다! EDIT Decimal 및 Jasper의 제안이있는 작동하지 않는 코드입니다. import decimal pi=decimal.Decimal(3) a=2 b=0 c=decimal.Decimal(0) while True: b=a*(a+1)*(a+2) c=4/b pi=pi+c print(str(pi)) a=a+2 b=a*(a+1)*(a+2) c=4/b pi=pi-c print(str(pi)) a=a+2
이 오류입니다 :
Traceback (most recent call last): File "C:\Users...\fastpi2.py", line 9, in pi=pi+c TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'
'while 1 == 1'은'while True '여야합니다. 'Decimal'을 사용한다면, 어디에서나 일관되게 사용해야합니다. – Jasper
그럼 당신의 질문은 무엇입니까? ''float's은 무한 정밀도를 할 수 없기 때문에 "working"코드는 무한 정밀도를 할 수 없습니다. 우리는 당신이 그것을 게시하지 않았기 때문에'Decimal'을 사용하는 작동하지 않는 코드를 당신을 도울 수 없습니다. – roippi
@ 재퍼 그래서 어떻게 구현할 수 있을까요? 나는 진실을 밝히고 작동시킬 수 있을까? 아니면 변화가 필요한 다른 장소가 있습니까? – awesomeshreyo