私は最近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値」を印刷する方法は?
私は最近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値」を印刷する方法は?
8000 / 65535 = 0,122072175
0,122072175 - 1 = -0,877927825
-0,877927825 / 0,245 = -3,58337888
が取得している値である場合-3,5833
、正しい結果が得られています。
bの生の値だけが必要な場合は、次のことを行う必要があります。
b = fabsf(b);
OR
printf("value:%f \r\n", fabsf(b));
このbは、a<65535.0であるaのすべての値に対して常に負になるためです。
これは、数学ライブラリが含まれていることを前提としています。