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 和计数变量都是数字而不是零:

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 时,它是一个int,就像 count 一样。由于 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 这样的数字将四舍五入为 0int percent = rateNum / count;

改用这个

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