1

我正在尝试将两个整数之间的除法结果保存到一个变量中,并将其显示在一个文件中。但它不适用于%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

感谢您的帮助。

4

2 回答 2

6

你需要说:

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

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

于 2013-06-05T20:50:55.123 回答
1

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

于 2013-06-05T21:31:04.053 回答