3
int c;
int f = 20;
c = 5 / 9 * (f - 32);
Console.WriteLine(c);
Console.ReadLine();

このコードを実行すると、cは0になりますが、これは間違っています。誰か教えてもらえますか?

4

3 に答える 3

8

計算は整数型で行われているためです。cダブル型変数だと思います。

c = 5d / 9 * (f - 32.0);

32.0またはを使用して、オペランドの1つが、に32dなるようにします。また、。に対しても同じことを行います。double5/9

また、doubleとして定義する必要があります。c

于 2013-01-21T11:39:43.343 に答える
3

問題は次の行にあります。

5 / 9

cとfは整数だからです。たとえば、11を10に分割するように依頼した場合。結果は1.1です。浮動小数点演算について知らないと仮定すると、11を10に除算することは不可能であると言うでしょう。または、1であると言うでしょう。ランタイム環境も同じことをします。整数を宣言しているので、0であると言います。

于 2013-01-21T11:40:33.987 に答える
1

ハビブはすでに何が起こっているのかを説明しました。cフロートまたはダブルに変更したくない場合にできることは次のとおりです。

c = (int)Math.Round(5.0 / 9.0 * (f - 32.0));
于 2013-01-21T11:58:44.457 に答える