2013-06-05 6 views
1

두 정수 사이의 나누기 결과를 변수에 저장하고이를 파일에 표시하려고합니다. 하지만 % f과 작동하지 않습니다.파일에 float 변수를 표시하는 방법은 무엇입니까?

그리고 그 이유를 모르겠지만,이 두 가지 테스트와 나는 같은 결과하지 않은 :

코드 (C) :

int x1 = 830, y1 = 622; 
int x2 = 540, y2 = 300; 

float a = (y1 - y2)/(x1 - x2); 

// test 1 
fprintf(file, "test 1 : \n\n"); 

fprintf(file, "a = (%d - %d)/(%d - %d) \n", y1, y2, x1, x2); 
fprintf(file, "a = %d/%d     \n", y1 - y2, x1 - x2); 
fprintf(file, "a = %f      \n\n", (y1 - y2)/(x1 - x2)); 

// test 2 
fprintf(file, "test 2 : \n\n"); 

fprintf(file, "a = %f \n\n", a); 

결과 (내 파일) :

test 1 : 

a = (622 - 300)/(830 - 540) 
a = 322/290     
a = 0.000000      

test 2 : 

a = 1.000000 

도움 주셔서 감사합니다. 당신은 소수점 연산 부동 실시합니다

fprintf(file, "a = %f", (float)(y1 - y2)/(float)(x1 - x2)) 
//      ^^^^^^^   ^^^^^^^ 

그 방법 :

답변

6

당신은 말할 필요가있다. 그렇지 않으면 정수 산술을하고 있습니다.

+0

감사합니다. 하지만 "테스트 2"나는 부동 변수 "a"표시하려고 노력하고있어 파일에 정확한 값을 표시 할 수 없습니다 ... – bob12

+3

@ bob12 만약 당신이 'a'를 계산하면, 같은 문제가 존재합니다 :'float a = (float) (y1 - y2)/(float) (x1 - x2); –

1

(제 응답이 문제의 일부에 해당됩니다) 예상되는 결과를 얻지 못했습니다. C가 int/int 나눗셈의 값을 계산하고 결과를 int로 지정하므로 "a"가 부동, 당신은 (1/2)와 같은 부문에서 0.000을 얻습니다. 직관적 인 솔루션은 모든 변수를 float로 선언합니다. 도움이되기를 바랍니다.

관련 문제