如何在文件中显示float变量?

时间:2013-06-05 20:49:48

标签: c printf

我正在尝试将两个整数之间的除法结果保存到变量中,并将其显示在文件中。但它不适用于%f

而且我不知道为什么,但是通过这两个测试我的结果并不相同:

代码(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

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

你需要说:

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

这样就可以执行浮点运算。否则你正在做整数算术。

答案 1 :(得分:1)

(我的回答涉及问题的一部分),你没有得到预期的结果原因:C计算除法int / int的值并将结果赋值给int,所以即使“a”是一个浮点数,你在(1/2)的分区得到0.000。直观的解决方案是将所有变量声明为float。希望它有所帮助。