我必须根据用户输入的小数位数对最终数字进行四舍五入。
像这样:
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));