我有一个BigDecimal数字,我只考虑了它的两个小数位,所以我使用以下命令截断它:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN)
现在我想将它打印为字符串,但如果它是0,则删除小数部分,例如:
1.00 -> 1
1.50 -> 1.5
1.99 -> 1.99
我尝试使用格式化程序formatter.format,但我总是得到两个十进制数字。
我该怎么做呢?也许正在处理bd.toPlainString()中的字符串?
发布于 2012-05-05 07:22:11
我使用DecimalFormat来格式化BigDecimal,而不是格式化字符串,似乎没有问题。
代码如下所示:
bd = bd.setScale(2, BigDecimal.ROUND_DOWN);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(0);
df.setGroupingUsed(false);
String result = df.format(bd);
发布于 2013-01-15 02:26:17
new DecimalFormat("#0.##").format(bd)
发布于 2015-06-03 13:56:36
下面的代码可能会对您有所帮助。
protected String getLocalizedBigDecimalValue(BigDecimal input, Locale locale) {
final NumberFormat numberFormat = NumberFormat.getNumberInstance(locale);
numberFormat.setGroupingUsed(true);
numberFormat.setMaximumFractionDigits(2);
numberFormat.setMinimumFractionDigits(2);
return numberFormat.format(input);
}
https://stackoverflow.com/questions/10269045
复制相似问题