lsvv1217   1년 전

answer = (sum(numlist)**2 -sum(i*i for i in numlist))/2 와print(int(answer))
로 하면 오류가 나고

answer = (sum(numlist)**2 -sum(i*i for i in numlist))//2 와print(answer)
로 하면 왜 오류가 안나는건가요?

그냥 나누고 int() 변환과 // 연산이  다른건가요?

검색을 해봐도 디테일한 설명을 못찾겠네요
/ 과 // 연산과 함께 int() 후처리 여부에 관한 차이를 알고싶습니다

hhs2003   1년 전

/ 는 나누기 연산이고, //은 모듈러 연산입니다.

나누기를 진행할 때, 부동 소수점 방식으로 진행하는데, 정확도 면에서 부동 소수점이 16자리를 넘어서 오차가 발생 하는 것 같습니다.

그렇게 발생한 오차가 반올림되어 값에 영향을 주는 것 같습니다.

in.txt

위 식과 아래 식의 정답이 다르게 나오는 것을 볼 수 있습니다.

hhs2003   1년 전

/ 은 부동 소수점을 이용한 연산, //은 정수 연산이라고 알고 있습니다. 위에 잘못 써 놨네요.

댓글을 작성하려면 로그인해야 합니다.