これをやろうとすると
double test = ((2 / 7) * 100);
0 を返します。
これがなぜなのか、それを回避する方法を知っている人はいますか?
ありがとう
2 / 7 は整数除算であり、0 を返します。代わりにこれを試してください
2.0 / 7
(double) 2 / 7
整数を除算しています。
整数以外の結果が必要な場合は、少なくとも 1 つのオペランドが float または double (または decimal) でなければなりません。
リテラルのいずれかに追加.00
してリテラルを作成することで、これを行うことができます。
整数計算を行ってdouble
おり、最終結果が得られたときにのみ変換します。
2 / 7 = 0
その間
2.0 / 7.0 = 0.285714285714285
値を計算しdouble
ます。
double test = ((2.0 / 7.0) * 100.0);
分裂のせいです。2 つの int 数値の除算は、小数点を切り捨てた int 数値を返します。したがって、演算 2/7 の結果は 0 になります。
次のようになります。
二重テスト = ((2.0 / 7.0) * 100.0);
あなたは整数を除算しているので、2 / 7
すでに になり0
ます。試し2.0 / 7.0
てみるだけで、正しい結果が得られます。
すべてのオペランドが整数であるため、整数除算を行っています。
これを修正するには、少なくとも 1 つのオペランドを次のように double に変更します。
double test = ((2.0 / 7.0) * 100.0);