1

2 つの整数の除算の結果を変数に保存し、それをファイルに表示しようとしています。しかし、%fでは機能しません。

理由はわかりませんが、これら2つのテストでは同じ結果が得られません:

コード (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

You need to say:

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

That way you perform floating point arithmetic. Otherwise you're doing integer arithmetic.

于 2013-06-05T20:50:55.123 に答える
1

(私の回答は問題の一部に関するものです)、期待した結果が得られない原因:Cは、int / intの除算の値を計算し、結果をintに代入するため、「a」がfloatであっても、 ( 1/2 ) のような除算で 0.000 。直感的な解決策は、すべての変数を float として宣言することです。それが役に立てば幸い。

于 2013-06-05T21:31:04.053 に答える