如何显示使用的BigDecimal总是2小数点多少?(How to display a number

2019-07-18 16:30发布

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

例如:

取出的值是1 - 应显示为1.00
获取的值是1.7823 - 应显示为1.78

我使用setScale(2, BigDecimal.ROUND_HALF_UP)但仍有些地方,如果从数据库中的数据是否相同正在显示一个整数!

我的意思是,如果该值从DB其显示为只有0。 我想,要显示为0.00

谢谢

Answer 1:

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


Answer 2:

您可以使用围捕格式

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

希望这帮助你。



Answer 3:

格式化数字在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)); 


Answer 4:

你需要使用类似NumberFormat用相应的语言环境来格式化

NumberFormat.getCurrencyInstance().format(bigDecimal);


Answer 5:

性BigDecimal.setScale会工作。



文章来源: How to display a number with always 2 decimal points using BigDecimal?