1407번 - 2로 몇 번 나누어질까
안녕하세요. 문제 풀다가 궁금한 점이 생겨서 여쭤봅니다.
44번째 줄에서 형변환을 생략하면 안되는 이유를 잘 모르겠습니다.
어차피 Math.pow(2, i)의 값은 소수점이 0이라 별 생각없이 따로 (long)을 안붙여줬더니 틀렸습니다.
입력값 작을 때는 별 문제 없다가도 입력값이 999999999983 999999999999999 이렇게 커져버리면 답과 1씩차이가 나서 틀리는데 왜 그런지 잘 모르겠습니다..ㅠ
저도 이부분에서 틀렸고 위와 같이 수정하여 맞았는데,
pow 함수 return 값이 실수형이라서 소수점 값이 입실론 형태(?)로 남습니다.
(입실론 형태 : 0.000001 이런식?)
그래서 큰 정수를 곱하게 되면 그 소수점에 있는 값이 정수가 되어 기존 계산한 값이랑 다르게 나오는 오류가 발생합니다.
따라서 위와 같이 형변환을 해줘야 소수점에 있는 값의 영향을 받지 않습니다.
댓글을 작성하려면 로그인해야 합니다.
336699go 2년 전
안녕하세요. 문제 풀다가 궁금한 점이 생겨서 여쭤봅니다.
44번째 줄에서 형변환을 생략하면 안되는 이유를 잘 모르겠습니다.
어차피 Math.pow(2, i)의 값은 소수점이 0이라 별 생각없이 따로 (long)을 안붙여줬더니 틀렸습니다.
입력값 작을 때는 별 문제 없다가도 입력값이 999999999983 999999999999999 이렇게 커져버리면 답과 1씩차이가 나서 틀리는데 왜 그런지 잘 모르겠습니다..ㅠ