336699go   2년 전

안녕하세요. 문제 풀다가 궁금한 점이 생겨서 여쭤봅니다.

44번째 줄에서 형변환을 생략하면 안되는 이유를 잘 모르겠습니다.

어차피 Math.pow(2, i)의 값은 소수점이 0이라 별 생각없이 따로 (long)을 안붙여줬더니 틀렸습니다.

입력값 작을 때는 별 문제 없다가도 입력값이 999999999983 999999999999999 이렇게 커져버리면 답과 1씩차이가 나서 틀리는데 왜 그런지 잘 모르겠습니다..ㅠ

cjh970422   1년 전

저도 이부분에서 틀렸고 위와 같이 수정하여 맞았는데,

pow 함수 return 값이 실수형이라서 소수점 값이 입실론 형태(?)로 남습니다.

(입실론 형태 : 0.000001 이런식?)

그래서 큰 정수를 곱하게 되면 그 소수점에 있는 값이 정수가 되어 기존 계산한 값이랑 다르게 나오는 오류가 발생합니다.

따라서 위와 같이 형변환을 해줘야 소수점에 있는 값의 영향을 받지 않습니다.

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