java.util.UnknownFormatConversionException: Conversion = '.'



我必须根据用户输入的小数位数对最终数字进行四舍五入。

像这样:

static String format(double var, double decimalPlaces) {
return String.format("%." + decimalPlaces + "f%n", var);
}
Scanner s = new Scanner(System.in).useLocale(Locale.US);
double s1,s2,sou,des;
s1 = s.nextDouble();
s2 = s.nextDouble();
des = s.nextDouble();
sou = s1 + s2;
System.out.printf(format(sou, des));

但在与的线路上

return String.format("%." + decimalPlaces + "f%n", var);

它返回此错误:

线程"main"java.util.UnknownFormatConversionException中出现异常:Conversion='.'

我查了一下格式,但每个人都像我一样使用了格式,还使用了double和变量。所以现在我不知道问题出在哪里了。

知道吗?THX

decimalPlaces不应该有double这样的类型,对吧
你不能通过%.2.71f这样的考试,因为。。。因为那时你想期待什么?

简而言之,您需要传递整数值。

这没关系:

String.format("%." + 3 + "f%n", var);

但是这不起作用(即抛出相同的异常(:

String.format("%." + 3.14 + "f%n", var);

deciamlValues的数据类型更改为int

static String format(double var, int decimalPlaces) {
return String.format("%." + decimalPlaces + "f%n", var);
}

您也可以使用NumberFormat进行格式化,这样就不需要编写单独的格式化方法。

sou = s1 + s2;
NumberFormat df = new DecimalFormat("#0.00");     
System.out.printf(df.format(sou));

最新更新