Java:分割时打印出0.0

时间:2015-11-20 16:47:02

标签: java double

我不明白这一点。我尝试了以下方法:

    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"

4 个答案:

答案 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 - 表示它。