2670번 - 연속부분최대곱
예시를 입력해도 잘 나오고, 제가 직접 테스트 케이스를 만들어 입력해보았는데도 잘 나왔습니다.
제가 생각하는 제 코드 오류는 만약에 답이 35라면 '35'가 출력되어야 하는데 '35.000'이 나온다는 것입니다.
제 코드에서 뭐가 문제인지 알려주시면 감사하겠습니다.
또, 만약 위에서 언급한 제가 생각하는 오류가 맞다면 '35.000'에 소수점 아래에 0을 어떻게 없애는 지에 관해도 알려주시면 감사하겠습니다.
35.000이 맞습니다. 셋째 자리까지 출력하라고 했기 때문입니다.
이 코드가 틀리는 이유는 부정확함의 끝판왕인 float를 썼기 때문입니다.
그럼 어떤 자료형을 써야할까요?
다른 실수 자료형인 'double'형을 썼는데 double 형으로 바꾸면 제대로 출력이 되지 않습니다.
어떻게 해야할까요? ㅠㅠ
자료형을 'float'형에서 'double'형으로 바꾸고 출력형식에 'l'을 추가하니까 맞았다고 뜨네요...
감사합니다..
혹시 'float'형은 왜 문제가 되는지 알려주실 수 있으신가요?
'float'형은 안되고 'double'형은 되는 이유요...
말씀드렸던 대로, float가 그만큼 부정확하기 때문입니다. float는 4바이트밖에 안 되는데도 꽤나 넓은 범위를 표현할 수 있죠? 그만큼 정확도에서 손실이 발생합니다. double은 8바이트이기 때문에 보다 높은 정확도를 가집니다.
네, 감사합니다...
djm03178님 조언대로 앞으로는 float형 말고 double형을 쓰도록 하겠습니다.
댓글을 작성하려면 로그인해야 합니다.
jabbong 4년 전
예시를 입력해도 잘 나오고, 제가 직접 테스트 케이스를 만들어 입력해보았는데도 잘 나왔습니다.
제가 생각하는 제 코드 오류는 만약에 답이 35라면 '35'가 출력되어야 하는데 '35.000'이 나온다는 것입니다.
제 코드에서 뭐가 문제인지 알려주시면 감사하겠습니다.
또, 만약 위에서 언급한 제가 생각하는 오류가 맞다면 '35.000'에 소수점 아래에 0을 어떻게 없애는 지에 관해도 알려주시면 감사하겠습니다.