gee308   1년 전

제가 문제라고 써놓은 부분이 왜 이런지 모르겠습니다


a=1000을 넣으면 제가 원하는 값이 나옵니다


근데 a=100000이정도 큰 값을 넣으면


c출력이 -21871232441 뭐 이런 값이 나옵니다


if구문 위에서 c를 출력하면 원하는 값이 나옵니다 어디가 문제일까요...

yukariko   1년 전

long int라고 쓰신걸로 보아 int보다 큰 8바이트 자료형을 사용하시려고 한것 같습니다.

그런데 long 형은 32비트/64비트에 따라 크기가 다르기 때문에 long long형을 쓰셔야합니다.

gee308   1년 전

조언 감사합니다!!

근데 제가 long을 사용한건 혹시 크기가 부족해서 그런가 사용한 것이었는데

근본적인 원인은 아니었던것 같습니다 long long을 사용해도 똑같은 결과값이 나옵니다

yukariko   1년 전

음수의 원인은 sqrt 함수안에 음수가 들어갈 수 있기 때문입니다.

sqrt안에 음수가 들어간다는것은 허수표현이 되므로 올바른값이 나오지 않을것입니다.

논리적으로 음수가 들어갈 수 없을것 같지만

실수형 변수를 정수형 변수에 담는 과정에서 오차가 발생할 수 있고 그로 인해 음수가 나타날 수 있습니다.

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