내가
코드가 좋아하는 C에서 부동 소수점 숫자 놀고 있었는데 오늘 :부동 번호
float a = 0.0;
a += 0.8;
if(a == 0.800000)
printf("correct");
문이 실행되지 않는 경우 이에 대한 나는 0.800000이었다 a의 값을 출력한다.
1correct2correct3correct4correct5correct6correct
문 7correct 및 8correct가 인쇄되지 않는 :로
무효 메인() {
float a=0.0f;
a=a+0.1f;
if(a==0.1f)
printf("1correct");
a += 0.1f;
if(a==0.2f)
printf("2correct");
a += 0.1f;
if(a==0.3f)
printf("3correct");
a += 0.1f;
if(a==0.4f)
printf("4correct");
if(a==0.5f)
printf("5correct");
a += 0.1f;
if(a==0.6f)
printf("6correct");
a += 0.1f;
if(a==0.7f)
printf("7correct");
a += 0.1f;
if(a==0.8f)
printf("8correct");
}
다음 프로그램의 인쇄 출력.
하나만 설명해주세요.
if (fabs (a-0.800000) <1e-6) printf ("correct"); – aerokite
모든 프로그래머는 부동 소수점 숫자가 항상 합산되지 않는 이유에 대해 [이 간단한 안내서] (http://floating-point-gui.de/)를 읽어야합니다! – Icemanind
[부동 소수점 연산이 깨졌습니다.] (http://stackoverflow.com/questions/588004/is-floating-point-math-broken)? –