2013-10-23 3 views
0

를 나타낸다. 플로트 부적절한 값 터보 C

그냥 다른 부분에 정확하게 위의 코드에 대한

#include<stdio.h> 
void main() 
{ 
float a=0.8; 
clrscr(); 
if(a<0.8) 
    printf("value from if a %f",a); 
else 
    printf("value from else a %f",a); 
getch(); 
} 

출력 else에서이다이 뜻 출력을 아래의 코드를 확인.

는 난 단지 elseif 다른 사람에게 간다 간다 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9

0.7,0.9로했습니다.

친절하게이 변형을 설명합니다.

+0

* 모든 컴퓨터 과학자가 부동에 대해 알아야 할 점 * (http://docs.sun.com/source/806-3568/ncg_goldberg.html) -와 http://stackoverflow.com/questions/4664662/understanding-floating-point-problems에있는 다른 답변 – usr2564301

답변

0

부동 소수점은 IEEE 형식에 따라 2의 제곱으로 저장됩니다. 부동 소수점 숫자를 비교할 때 일반적인 문제입니다.

#include<stdio.h> 
void main() 
{ 
float a=0.9f; 
clrscr(); 
if(a<0.9f) 
    printf("value from if a %f",a); 
else 
    printf("value from else a %f",a); 
getch(); 

} 

.F 추가로 코드를 변경하십시오 그렇지 않으면 당신은 당신의 비교를 위해 얼마나 정밀이 필요합니다. 어느 쪽이든 delta (const float delta = 0.000001;)를 가질 수 있고이 값을 더하기/빼기 할 수 있습니다. 페이지에 주어진처럼 :

http://www.softwareandfinance.com/CPP/FAQ_Floating_Point.html