Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的等式总是为零?_Java_Android_Math_Equation - Fatal编程技术网

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;