java - Big Decimal 总是四舍五入到两位小数(即使我的 BigDecimal 对象没有小数)?

标签 java rounding bigdecimal

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

我在做:

myBigDecimal.setScale(2, RoundingMode.HALF_UP); // works fine when it has decimals

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

但是

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

有什么想法或解决方法吗?

谢谢

最佳答案

您可以使用 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)));
}

输出:

12.46
12.00

Customizing Formats (The Java Tutorials > Internationalization > Formatting) 中查看更多信息。

关于java - Big Decimal 总是四舍五入到两位小数(即使我的 BigDecimal 对象没有小数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20550657/

相关文章:

java - Grail Controller 是否遵循 SOLID 的单一职责原则?

python - Django 中的全局小数舍入选项

java - 有没有办法让 BigDecimal 比我这里更快?

java - `scale` 中的 `BigDecimal#divide()` 越高,速度越快?

Java在Swing上画圆和线

java.lang.StackOverflowError 使用正则表达式解析大字符串

Java : Rounding a decimal value to HALF_EVEN

javascript - 如何在 Google 表格中将值舍入为整数的倍数?

java - BigDecimal 的 DecimalFormat 模式。

java - 使用 bash 脚本设置 Java 路径 CentOs 7