我正在尝试使用 DecimalFormat 格式化价格,但这并不适用于所有变体。
DecimalFormat df = new DecimalFormat("0.##")
df.format(7.8)
df.format(85.0)
打印
7.80
和
85
但是“7.79999”被格式化为“7.8”,而不是“7.80”。我试过这样做
DecimalFormat df = new DecimalFormat("0.00")
强制两个 dp,但随后“85.0”被格式化为“85.00”而不是“85”!
是否有一种方法可以捕获所有变化,以便将价格打印为#、## 或#.##?例如:
5, 55, 5.55, 5.50, 500, 500.40
最佳答案
这两种格式之间存在细微差别。 “#.##”表示它将打印最多两位小数的数字,而“#.00”表示它将始终显示两位小数,如果小数位小于两位,它将用零替换它们。请参阅下面的输出示例。
public static final DecimalFormat df1 = new DecimalFormat( "#.##" );
public static final DecimalFormat df2 = new DecimalFormat( "#.00" );
System.out.println(df1.format(7.80));
System.out.println(df1.format(85));
System.out.println(df1.format(85.786));
System.out.println(df2.format(7.80));
System.out.println(df2.format(85));
System.out.println(df2.format(85.786));
输出将是
7.8
85
85.79
7.80
85.00
85.79
关于java - 使用 DecimalFormat 格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16583604/