如何使用BigDecimal显示总是2个小数点的数字?

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

例如:

取值为1 – 应显示为1.00
取值为1.7823 – 应显示为1.78

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

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

谢谢

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

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

产量

 1.00 

你可以使用舍入格式

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

希望这对你有所帮助。

要在JAVA中格式化数字,您可以使用:

  System.out.printf("%1$.2f", d); 

其中d是你的变量或数字

要么

  DecimalFormat f = new DecimalFormat("##.00"); // this will helps you to always keeps in two decimal places System.out.println(f.format(d)); 

您需要使用具有适当区域设置的NumberFormat 格式进行格式化

 NumberFormat.getCurrencyInstance().format(bigDecimal); 

BigDecimal.setScale可以工作。