1

とても簡単な質問をして本当に申し訳ありませんが、私は本当に何が問題なのか理解できません。任意のマークを12年生のスケールに変換したいと思います。私はこれを次のようにしようとしています:

double coef=(4/20)*12;
int mark=(int)coef;

しかし、デバッガーを介してこのコードを実行するcoefと、ゼロに等しいことがわかります。これが二重変数である場合はなぜですか?

4

6 に答える 6

12

結果を値に代入しているにもかかわらず、計算は整数を使用して実行されるためです。また、C# の整数演算では. だからあなたは次のようなものが必要ですdouble4 / 200

double coef = 4.0 / 20 * 12;

これ4.0により、残りの計算でdoubles が使用されるようになります。しかし、多くの場合、読者が型変換規則について知る必要がないように、すべての数値を明示的にすることは実際には良い習慣です。

double coef = 4.0 / 20.0 * 12.0;
于 2012-11-19T19:31:35.863 に答える
2

別の方法は次のとおりです。

4 * 12 / 20;

ただし、結果が 2 に切り捨てられることに注意してください (これはまだ整数除算であるため) int

また、へのキャストintは丸めではなく切り捨てられることに注意してください。Math.Round実際に結果を丸めたい場合に使用します。あなたが与えた数値と違いはありませんが、実際にはこれらの定数だけで作業することはないと思います!

于 2012-11-19T19:35:52.207 に答える
2

変換が必要になるまで整数除算です...

4/20 = 0
0 * 12 = 0
于 2012-11-19T19:31:27.313 に答える
1

最初に整数除算を行い、次に 12 を掛けます。

あなたがするとき:

(4/20)

どちらも整数であるため、これは 0 に評価されます。

次のように double を明示的に指定するように変更します。

double coef = (4.0 / 20.0) * 12;
于 2012-11-19T19:31:30.360 に答える
1

試す

double coef = (4.0/20.0)*12;

それから

int mark = (int)coef;
于 2012-11-19T19:32:04.580 に答える
1

コード内のすべての定数は整数であり、整数としての 4/20 の結果は 0 です。

次のように書き直します。

(4.0/20.0)*12.0;
于 2012-11-19T19:32:06.350 に答える