0

単純なパーセントを実行しようとしていますが、結果は常にゼロです。

String taste = jsonArray.getJSONObject(i).getString("taste");
                String rate = jsonArray.getJSONObject(i).getString("rate");

                Log.d("taste", rate);
                int rateNum = Integer.parseInt(rate);

                Log.d("taste", "rateNum is " + rateNum);

                int percent = rateNum / count;

                percent = percent * 100;

                Log.d("taste", "percent is " + percent);

奇妙な部分は、ログを見ることです。rateNum と count 変数は両方とも数値であり、ゼロではありません。

06-26 21:52:44.319: D/taste(11812): count it:20
06-26 21:52:44.319: D/taste(11812): 13
06-26 21:52:44.319: D/taste(11812): rateNum is 13
06-26 21:52:44.319: D/taste(11812): percent is 0
06-26 21:52:44.319: D/taste(11812): 3
06-26 21:52:44.319: D/taste(11812): rateNum is 3
06-26 21:52:44.319: D/taste(11812): percent is 0
06-26 21:52:44.319: D/taste(11812): 3
06-26 21:52:44.319: D/taste(11812): rateNum is 3
06-26 21:52:44.319: D/taste(11812): percent is 0
06-26 21:52:44.319: D/taste(11812): 1
06-26 21:52:44.319: D/taste(11812): rateNum is 1
06-26 21:52:44.319: D/taste(11812): percent is 0

だから、なぜ自分のパーセンテージがゼロになり続けるのか、私にはわかりません。

4

3 に答える 3

2

あなたは数値型の間違いに苦しんでいます。

rateNum を取得すると、intcount と同様に です。int/int=int (小数の切り捨て) であるため、0 に 100 を掛けて 0 を取得しています。

解決策は次のとおりです。

String taste = jsonArray.getJSONObject(i).getString("taste");
            String rate = jsonArray.getJSONObject(i).getString("rate");

            Log.d("taste", rate);
            double rateNum = Double.parseInt(rate);

            Log.d("taste", "rateNum is " + rateNum);

            double percent = rateNum / count;

            percent = percent * 100;

            Log.d("taste", "percent is " + percent);
于 2013-06-27T02:00:14.743 に答える
1

あなたは試してみたいかもしれません

int percent = (100*rateNum) / count;

または、数学に浮動小数点を使用します。あなたの価値はゼロに切り捨てられ、決して回復することはありません.

于 2013-06-27T01:59:32.927 に答える
0

パーセントを保存するために int 型を使用しているため、0.8 のような数値は 0 に丸められます。int percent = rateNum / count;

代わりにこれを使用してください

float percent = rateNum / count;
于 2013-06-27T02:00:44.350 に答える