Java:分割时打印出0.0

Java:分割时打印出0.0,java,double,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(d

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

    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。为什么?

编辑:如果我更改为double,我会得到:

主线程java.lang.NumberFormatException中的异常:对于输入字符串:83,33


这里的问题是,你要对两个整数求和,然后进行强制转换。为了按照您的意愿格式化数字,您必须在进行求和之前将int转换为double

编辑


为了避免出现异常,您需要用点而不是逗号输入值。

因为您应该删除括号 改变这个

 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

将您的数学代码更改为:

procent = ((double) antalRätta/(antalRätta+antalFela)) * 100;

这样,当您进行整数除法时,您将结果转换为双精度。当乘以100时,这并不重要,因为当我们将一个double和一个整数相乘时,我们得到了一个double

当你除以一个整数时,你会得到一个整数:5/6=0。转换为双精度将主要添加一个小数位,即0.0-就是这样。

为什么打印出来时会得到200.0?或者您可以为DecimalFormatString、DecimalFormatSymbols构造函数提供适合您所在区域的值。。。