Java 为什么我的等式总是为零?
我试着做一些简单的百分比,结果总是零Java 为什么我的等式总是为零?,java,android,math,equation,Java,Android,Math,Equation,我试着做一些简单的百分比,结果总是零 String taste = jsonArray.getJSONObject(i).getString("taste"); String rate = jsonArray.getJSONObject(i).getString("rate"); Log.d("taste", rate); int rateNum = Integer.parseInt(rate);
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);
奇数部分是查看我的日志my 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
所以我不知道为什么我的百分比一直是零。你可能想试试
int percent = (100*rateNum) / count;
或者使用浮点进行数学运算。您的值被舍入到零,然后再也无法恢复。您可能想试试
int percent = (100*rateNum) / count;
或者使用浮点进行数学运算。您的值被舍入到零,然后再也无法恢复。您正遭受数字类型错误的痛苦 当您获得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);
您正在遭受数字类型错误的痛苦 当您获得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);
您正在使用int type保存百分比,因此类似于0.8的数字将在
int percent=rateNum/count时四舍五入为0代码>
用这个代替
float percent = rateNum / count;
您正在使用int type保存百分比,因此类似于0.8的数字将在int percent=rateNum/count时四舍五入为0代码>
用这个代替
float percent = rateNum / count;