나는 나의 출력이출력이 왜 그렇게 이상하다고 말할 수 있습니까?
0----2----4----6----8----1----1----1----1
되고 싶어하지만 난
0----2----------------------------------
은 기본적으로 내가 0.4 단위로 16 0에서 계산하려는 점점 계속. 여기 내 코드입니다 :
int
main(int argc, char *argv[]) {
double x;
for(x = 0.0; x<= 16.0; x = x + 0.4){
if(fmod(x,2.0) == 0){
if(x< 10){
printf("%.0f",x);
}
if(x >= 10){
printf("%.0f",x/10);
}
}
else{
putchar('-');
}
}
printf("\n");
return 0;
}
부동 소수점 정밀도 : fmod (x, 2.0) == 0 –
답변을 얻은 후에 코드를 삭제하지 마십시오. 이것은 공개 Q & A 사이트이며 앞으로 다른 사람들에게 유용한 질문이되기를 바랍니다. –
0.4는 이진 부동 소수점으로 표현 될 수 없기 때문에 정확한 2.0을 얻을 수 없습니다. http://stackoverflow.com/questions/588004/is-floating-point-math-broken http://stackoverflow.com/questions/5599912/what-do-floats-to-add-in-java는이 http://floating-point-gui.de/ [모든 컴퓨터 과학자가 부동 소수점 연산에 대해 알아야 할 사항] (http : // docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –