如何使用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可以工作。