for 조건문에서 이상한 점이 있습니다...
잔디
2023.04.01
#include stdio.h
#include math.hint main(void)
{
double i, j=0;
for (i = 1; j 0.2; i++)
{
j = j + pow(10.0, -4.0);
printf(j=%f\n, j);
}
}0부터 0.2까지 10의 -4승 단위로 쪼개 열거를 합니다.그런데 직접 실행해보면 0.2까지가 아닌 0.2001까지 프린팅됩니다.j=0.2인 순간 for구문은 실행이 될 수 없고 탈출을 해야하는데조건문의 j=0.200000이라고 해도 여전히 0.2001을 프린팅합니다.한번 j0.2를 j0.1로 바꾸니 0.100000까지만 프린팅하고pow(10.0, -4.0)을 pow(10.0, -3.0)으로 바꾸니이 경우도 제대로 0.20000까지만 호출하는데왜 저 경우에만 0.2001까지 프린팅이 되는건가요?도배하는 것 같아서 죄송하지만 이건 정말 모르겠네요 ㅠㅠㅠㅠㅠ
-
너의길
for문이 이상하다고 하기보단 float, double 같은 부동소수형 타입의 특성입니다.
정확성이 정수형에 비해서 떨어지죠.
0.1을 10번 더해보고 그값이 1.0이랑 같은지 확인해 보세요.
더 알고싶으면 부동소수형 저장방식을 검색해보세요.