我在用大十进制以获得一些价格值。需求是这样的,无论我们从数据库中获取什么值,显示的值都应该有2个小数点。
Eg:
获取的值为 1 - 应显示为 1.00
获取的值为 1.7823 - 应显示为 1.78
我在用setScale(2, BigDecimal.ROUND_HALF_UP)
但仍然有些地方,如果数据库中的数据是整数,则显示的数据相同!
我的意思是,如果数据库中的值为 0,则仅显示为 0。我希望它显示为 0.00
Thanks
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);
output
1.00
注意 - 从 Java 9 开始BigDecimal.ROUND_HALF_UP
已被弃用,您现在应该使用RoundingMode.ROUND_HALF_UP
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)