실수로만 이루어진 식으로 계산을 하였더니 복소수 값이 나왔습니다.

조회수 564회
for i in range(1, 100):
    num = 2 ** i
    p2 = 0

    for k in range(1, num + 1):
            p2 += (1 / num + 1) * ( (1 - (k / num + 1) ** 2) ** .5 ) * 4

    print(p2)

이게 코드인데, 원래대로라면 파이값의 근사치에 가까운 값이 나와야 하는데 자꾸 복소수 값이 출력 됩니다..

for i in range(1, 100):
    num = 2 ** i
    p2 = 0

    for k in range(1, num):
            p2 += (1 / num) * ( (1 - (k / num) ** 2) ** .5 ) * 4

    print(p2)

반면 이 코드는 잘 작동이 됩니다.

어디서 문제가 발생된 것 일까요?

  • 해결했습니다! (1 / num + 1)이 아니라 (1 / (num + 1)) 으로 바꿔주니 잘 되네요.. Promixium 2019.3.26 09:46
  • 근데 아직도 왜 갑자기 복소수 값이 나왔는지는 의문이네요.. Promixium 2019.3.26 09:46

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)