2013-06-27 26 views
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 

所以我不知道为什么我一直得到零作为我的百分比。

回答

2

您患有数字类型的错误。

当你得到rateNum时,它是一个int,就像count一样。由于INT/INT = INT(截断小数),你乘以100 0至得到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); 
1

你可能想尝试

int percent = (100*rateNum)/count; 

或使用浮点的运算。你的价值被舍入到零,然后永远不会恢复。

0

您正在使用的int类型保存%,因此一像0.8号将在int percent = rateNum/count;

使用这个代替

float percent = rateNum/count; 
四舍五入到0
相关问题