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构造函数提供适合您所在区域的值。。。