如何使用BigDecimal显示始终具有2个小数点的数字?

2022-09-01 01:54:55

我正在使用BigDecimal来获取一些价格值。要求是这样的,无论我们从数据库获取什么值,显示的值都应该有2个小数点。

例如:

提取值为 1 - 应显示为 1.00
提取值为 1.7823 - 应显示为 1.78

我正在使用,但仍然有些地方,如果来自DB的数据是一个整数,那么显示相同的!setScale(2, BigDecimal.ROUND_HALF_UP)

我的意思是,如果DB的值为0,则仅显示为0。我希望显示为 0.00

谢谢


答案 1

BigDecimal是不可变的,任何操作,包括setScale(2,BigDecimal.ROUND_HALF_UP)都会产生一个新的BigDecimal。正确的代码应该是

BigDecimal bd = new BigDecimal(1);
bd.setScale(2, BigDecimal.ROUND_HALF_UP); // this does change bd
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bd);

输出

1.00

注意 - 由于 Java 9 已被弃用,您现在应该使用 。BigDecimal.ROUND_HALF_UPRoundingMode.ROUND_HALF_UP


答案 2

您可以使用舍入格式

BigDecimal bd = new BigDecimal(2.22222);
System.out.println(bd.setScale(2,BigDecimal.ROUND_UP));

希望这对您有所帮助。