개발 이야기/TIL

[Python] Overflow와 type casting

혁진 2025. 5. 1. 13:01
    term1 = t*(t-1)*(n-t)*(n-t-1) / (n*(n-1)*(n-2)*(n-3))
                                     ~~~~~~~~~~~~~^^~~~~
FloatingPointError: overflow encountered in scalar multipl

 

Python으로 수식 계산 중 다음 부분에서 FlaotingPointError와 다른 항들에서도 Overflow발생.

 

원인: type

t랑 n은 정수형이었음. 즉 다음 수식 계산시 곱셈부분의 범위가 커졌고(n=1000 t도 1000정도 되는 상황)

따라서 연산에서 wrap-aorund가 발생한것 같음. 

 

따라서 계산량이 많을 때 + 위 상황은 float 결과를 반환하는 상황임으로 Float으로 type casting하고 연산해야함.

 

해결: float type casting

            t = float(t)
            n = float(n)
            R1 = float(R1)
            R2 = float(R2)
            nE = float(nE)