尝试将输出格式化为2位小数时,我一直收到错误。例如来自5.0
我想要5.00
在java中。下面的代码不断给出格式错误。
System.out.printf("%-40s %-6.2f", "Borrowing Fee: $", borrowingFee + "\n");
我希望它输出:Borrowing Fee: $5.00
答案 0 :(得分:0)
为什么这么复杂的代码? 如果您有一个浮动作为输入,您可以这样做:
public static void main(String[] args) {
float borrowingFee = 5.0F;
System.out.printf("Borrowing Fee: $%.2f ", borrowingFee );
}
它应该根据您的语言区域返回Borrowing Fee: $5,00
或Borrowing Fee: $5.00
。
答案 1 :(得分:0)
如果您使用{
"errorOccured": false,
"transaction": [
{
"businessDate": "10/25/2011",
"canViewReceipt": false,
"modifiedBusinessDate": ""
}
]
}
进行编程,则格式化打印与C
相同。
尝试这样的事情:
C
答案 2 :(得分:0)
您可以使用DecimalFormat。它有许多实用功能。
public static String getFormattedAmountWithDecimals(String value){
String tmpDouble = "";
DecimalFormat formatter = new DecimalFormat("###,###,###.00");
try {
tmpDouble = formatter.format(Double.parseDouble(value));
if(tmpDouble.equalsIgnoreCase(".00")){
tmpDouble = "0.00";
}
}catch(Exception e) {
// System.out.println(e.toString());
}
return tmpDouble;
}
答案 3 :(得分:0)
我喜欢参考该方法的公开文档。
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
最重要的是格式:
public PrintStream format(String format,Object ... args)
然后再回头看一下你的代码:
System.out.printf(“% - 40s%-6.2f”,“借款费用:$”,借用费+“\ n”);
你正在尝试字符串+字符串+参数+字符串。所以如果你想修改你的代码行:
System.out.printf(“% - 40s%-6.2f”,“借款费用:$ \ n”,借用费用);
这样就回到了方法String + String + ... + n string,Arguments
的格式答案 4 :(得分:0)
首先,%s 表示字符串,%f 表示浮点数。
System.out.printf("% - 40s%-6.2f","借款费用:$&#34 ;,借用费+" \ n");
在你的情况下,第三个参数borrowingFee + "\n"
创建一个字符串,它不能与%f匹配。这就是您可能收到异常消息java.util.IllegalFormatConversionException: f != java.lang.String
此处IllegalFormatConversionException表示f
(%f)与java.lang.String不兼容。
简单的解决方法是将\n
移动到第一个参数中,因为它的格式是:
System.out.printf("%-40s %-6.2f\n", "Borrowing Fee: ", borrowingFee);
请注意,第一个参数"%-40s %-6.2f\n"
是使用%s和%f创建空白的格式,其余参数是这些空白的填充。
此外,您的第二个参数"Borrowing Fee: $"
被承诺为固定字符串。除非您想在冒号和Borrowing Fee: 55.00
之类的数字之间留出巨大空间,否则您不需要格式化它。你可以简单地做
System.out.printf("Borrowing Fee: %.2f\n", borrowingFee);
或\t
System.out.printf("Borrowing Fee:\t %.2f\n", borrowingFee);
docs.oracle.com(java7)上的
public PrintStream printf(String format , 对象... args)
参数:
格式 - 格式字符串语法中描述的格式字符串
args - 格式字符串中格式说明符引用的参数。如果参数多于格式说明符,则忽略额外参数。参数的数量是可变的,可以为零。参数的最大数量受Java™虚拟机规范定义的Java数组的最大维数限制。 null参数的行为取决于转换。
我打算在代码中解释函数调用和错误。
查看Andy的链接,了解有关格式化的详细信息。
答案 5 :(得分:0)
替换
System.out.printf("%-40s %-6.2f", "Borrowing Fee: $", borrowingFee + "\n");
使用
System.out.printf("%-40s %-6.2f%n", "Borrowing Fee: $", borrowingFee );
输出:
Borrowing Fee: $ 5.00
说明:
"Borrowing Fee: $"
的格式为%-40s
borrowingFee
的格式为%-6.2f
%n
用于换行