大十进制舍入到两位小数总是(即使我的BigDecimal对象没有小数)?

Ryu*_*yuk 1 java rounding bigdecimal

如何将BigDecimal对象始终舍入为2位小数(即使我的BigDecimal对象没有小数)?

我正在做:

myBigDecimal.setScale(2, RoundingMode.HALF_UP); // works fine when it has decimals
Run Code Online (Sandbox Code Playgroud)

上下文:我有一个POJO列表,当我发送到前端时,我在ExtJs中给它们格式

但

我也在生成一个CSV文件,并且我被要求所有经济领域都有2位小数.

任何想法或工作?

谢谢

Pau*_*gas 6

您可以使用java.text.DecimalFormat该类来设置十进制数字的格式.例如

代码:

public static void main(String[] args) {
    DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    symbols.setDecimalSeparator('.');
    DecimalFormat formatter = new DecimalFormat("#.00", symbols);
    System.out.println(formatter.format(BigDecimal.valueOf(12.456)));
    System.out.println(formatter.format(BigDecimal.valueOf(12L)));
}
Run Code Online (Sandbox Code Playgroud)

输出:

12.46
12.00
Run Code Online (Sandbox Code Playgroud)

有关自定义格式的更多信息(Java教程>国际化>格式化).