java.util.UnknownFormatConversionException:Conversion='';
我必须根据用户输入的小数位数对最终数字进行四舍五入 像这样:java.util.UnknownFormatConversionException:Conversion='';,java,exception,error-handling,formatting,Java,Exception,Error Handling,Formatting,我必须根据用户输入的小数位数对最终数字进行四舍五入 像这样: 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.next
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
小数位数
不应具有双精度的类型,对吗?您无法传递类似
%.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));
还有一个额外的
,它从双
变量进入字符串…请尝试:..+(int)小数位数+…
。更好:int des=s.nextInt()。。。。字符串格式(双变量,整数小数点)