【发布时间】:2014-03-18 01:30:04
【问题描述】:
我需要一个 DecimalFormat 或更好的等价物来表示 Double 值(在 Java 中),它可能是:
25 或 25.5
如果它有 any (25.50),我需要将其表示为整数 (25) 或两位小数。这是因为我将其打印为 money。
我已经有了以下格式:
DecimalFormat decFormat = new DecimalFormat("##,###.##");
如果Double 是一个整数,这将非常有效;我得到了 25,000 美元的输出。除非该值为 25,000.5;当我需要将其打印为 $25,000.50 时,它会打印 $25,000.5。问题如docs中所述:
#一个数字,零表示不存在
所以基本上最后一个零被去掉了,因为它是可选的。
我做不到:
DecimalFormat decFormat = new DecimalFormat("##,###.#0");
因为那是不允许的。
我怎样才能做到这一点?
注意:
这些问题是相关的,但没有涵盖我对DecimalFormat 的具体需求。大多数答案建议使用BigDecimal 或printf。这是最好的做法吗?我不必必须使用DecimalFormat,但我更喜欢使用,因为我已经开始走这条路了(到处都有很多代码已经在使用它)。
Best way to Format a Double value to 2 Decimal places
【问题讨论】:
-
你试过
new DecimalFormat("##,###.00");吗? -
是的,这给了我两位小数,无论 Double 是否有一位。即 25000 变成我不想要的 25,000.00