我不明白这一点。我尝试了以下方法:
double procent = 0;
int antalRätta = 5;
int antalFela = 1;
DecimalFormat df = new DecimalFormat("#.##");
procent = (double) (antalRätta/(antalRätta+antalFela)) * 100;
double procentMsg = Double.parseDouble(df.format(procent));
procent
打印0.0
。为什么呢?
编辑:如果我改为加倍,我得到:
线程中的异常" main" java.lang.NumberFormatException:对于输入字符串:" 83,33"
答案 0 :(得分:0)
这里的问题是你正在计算两个整数的总和然后再进行投射。为了根据需要格式化数字,你必须在执行总和之前将int转换为double ...
修改强>
为了避免您遇到的异常,您需要使用点而不是逗号输入值。
答案 1 :(得分:0)
因为你应该删除括号 改变这个
procent = (double) (antalRätta/(antalRätta+antalFela)) * 100;
用这个
procent = (double) (antalRätta/antalRätta+antalFela) * 100;
你有200因为
antalRätta/antalRätta = 1
and 1 + antalFela = 2
2*100 = 200
答案 2 :(得分:0)
将您的数学代码更改为:
procent = ((double) antalRätta/(antalRätta+antalFela)) * 100;
当你进行整数除法时,你将结果转换为double。然后当乘以100时无关紧要,因为当我们乘以一个double和一个整数时,我们得到一个double。
答案 3 :(得分:0)
当你划分一个int时,你会得到一个int:5 / 6 = 0
。转换为double将主要添加一个小数位,即0.0 - 表示它。