2つの数値を除算して、次のような結果を取得します。
5/2 = 2.50
ただし、出力は2のみです。
私は今私が間違っていることはしていません。
ここに私のコード:
int a;
int b;
int c;
printf("First num\n");
scanf("%d", &a);
printf("Second num\n");
scanf("%d", &b);
c = a / b;
printf("%d", c);
結果を保存するには、double
変数が必要です。 int
は整数のみを格納します。さらに、除算を実行する前に、他の変数も型キャストする必要があります。
このようなことをする
_double c;
.
.
.
c = (double)a / (double)b;
printf("%f", c);
_
注:
printf()
ステートメントに_&
_は必要ありません。
float
(整数)変数ではなく、double
またはint
変数を使用する必要があります。また、2つの整数間の除算は整数の結果につながりますが、float
/double
と整数間の除算は浮動小数点の結果になります。これは、Cがこの整数をfloat
に暗黙的に昇格させるためです。
例えば:
5/2 = 2
5/2.0f = 2.5f
.0f
、これは実際にはフロートで除算していることを意味します。
Floatでの型キャストを回避するには、%fフラグでscanfを直接使用できます。
float a;
float b;
float c;
printf("First number\n");
scanf("%f", &a);
printf("Second number\n");
scanf("%f", &b);
c = a / b;
printf("%f", c);
'/'-記号は除算用です。 C言語では、整数を整数で除算してデータを整数に格納すると、出力としての答えは整数になります。 例
int a = 3, b = 2, c = 0;
c = a/b; // That is c = 3/2;
printf("%d", c);
受け取ったoutputは:1
理由は、使用した変数のタイプ、つまり整数(int
)です
出力を格納するために整数が使用される場合は常に、結果は10進値ではなく整数として格納されます。
10進数の結果を格納するために、C言語はfloat
、double
、long float
およびlong double
を提供します。
操作を実行し、10進数での出力が必要な場合は常に、結果のストレージ変数に上記のデータ型を使用できます。 例
int a = 3, b = 2;
float c = 0.0;
c = (float)a/b; // That is c = 3/2;
printf("%.1f", c);
出力受信:1.5
そのため、これは概念を理解するのに役立つと思います。
Remember:float
を使用している場合、アクセス指定子は%f
です。私と同じように、答えをfloat
に変換する必要があります。そうすると、答えが反映されます。