-3

私は最近C言語で働き始めました。簡単な問題が1つあります

 Unsigned int a;
 float b;
  a=8000;
 b=(((((float)a)/65535)-1)/0.245);    //  b= ((a/65535)-1)/0.245;
 printf("value:%f \r\n", b);

上記の式の何が問題なのかわかりませんが、「b」の値を出力できません。「b値が負」になります。「b値」を印刷する方法は?

4

2 に答える 2

1
8000 / 65535         =  0,122072175
0,122072175 - 1      = -0,877927825
-0,877927825 / 0,245 = -3,58337888

が取得している値である場合-3,5833、正しい結果が得られています。

于 2012-10-19T12:12:03.600 に答える
0

bの生の値だけが必要な場合は、次のことを行う必要があります。

b = fabsf(b);
OR
printf("value:%f \r\n", fabsf(b));

このbは、a<65535.0であるaのすべての値に対して常に負になるためです。

これは、数学ライブラリが含まれていることを前提としています。

于 2012-10-19T12:14:09.637 に答える