0

これをやろうとすると

double test = ((2 / 7) * 100);

0 を返します。

これがなぜなのか、それを回避する方法を知っている人はいますか?

ありがとう

4

6 に答える 6

12

2 / 7 は整数除算であり、0 を返します。代わりにこれを試してください

2.0 / 7

(double) 2 / 7
于 2012-10-03T14:45:39.923 に答える
4

整数を除算しています。

整数以外の結果が必要な場合は、少なくとも 1 つのオペランドが float または double (または decimal) でなければなりません。

リテラルのいずれかに追加.00してリテラルを作成することで、これを行うことができます。

于 2012-10-03T14:45:47.590 に答える
0

整数計算を行ってdoubleおり、最終結果が得られたときにのみ変換します。

2 / 7 = 0

その間

2.0 / 7.0 = 0.285714285714285

値を計算しdoubleます。

double test = ((2.0 / 7.0) * 100.0);
于 2012-10-03T14:46:49.843 に答える
0

分裂のせいです。2 つの int 数値の除算は、小数点を切り捨てた int 数値を返します。したがって、演算 2/7 の結果は 0 になります。

次のようになります。

二重テスト = ((2.0 / 7.0) * 100.0);

于 2012-10-03T14:58:16.953 に答える
0

あなたは整数を除算しているので、2 / 7すでに になり0ます。試し2.0 / 7.0てみるだけで、正しい結果が得られます。

于 2012-10-03T14:45:52.303 に答える
0

すべてのオペランドが整数であるため、整数除算を行っています。

これを修正するには、少なくとも 1 つのオペランドを次のように double に変更します。

double test = ((2.0 / 7.0) * 100.0);
于 2012-10-03T14:46:14.853 に答える