java - 使用 DecimalFormat 格式化数字

标签 java decimalformat

我正在尝试使用 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/

相关文章:

java - com.mysema.querydsl querydsl-apt 插件不生成 QueryDSL 类

java - 如何将 DecimalFormat 的小数点分隔符从逗号更改为点/点?

java - 如果我使用单独的类,如何使用 DecimalFormat 格式化结果?

java - 递归计算PI

java - HSQLDB加密数据库重置密码

android - 在不同的语言环境中测试 Android 应用程序

java - GWT:如何在服务器和客户端(Gin/Guice)上格式化数字

java - CodeEval 重叠矩形代码审查

java - 使用 Apache Tika 提取文本,然后在删除停用词后获取频繁出现的单词