一般网站模块,网站制作开发平台,php框架做网站好处,个人适合网站类型BigDeciaml1. BigDecimal1. BigDecimal
我们知道#xff0c;关于金钱相关的计算#xff0c;都用BigDeciaml数据类型, 来表示金额。所有关于金额的项目中不能缺少它的使用。 而我今天说说用这个类型#xff0c;踩到的坑。
金额比较问题 带精度不适用equals比较。使用compar…
BigDeciaml1. BigDecimal1. BigDecimal
我们知道关于金钱相关的计算都用BigDeciaml数据类型, 来表示金额。所有关于金额的项目中不能缺少它的使用。 而我今天说说用这个类型踩到的坑。
金额比较问题 带精度不适用equals比较。使用compareTo比较精度。如0和0.00比较。 public class BigDecimalDemo {public static void main(String[] args) {BigDecimal a new BigDecimal(0.00);BigDecimal b new BigDecimal(0);System.out.println(a.compareTo(b) 0); // trueSystem.out.println(a.equals(b)); // false}
}
除法问题。 根据业务不同要四舍五入。要保留两位小数把两位小数后面的零头给去掉。不能整除的会抛异常需要指明除法策略。
// 去掉零头参考RoundingMode
BigDecimal res new BigDecimal(888).divide(new BigDecimal(233), 2, RoundingMode.DOWN);
System.out.println(res); // 3.81如RoundingMode.HALF_UP四舍五入。
如果是页面需要百分数可以考虑保留小数点后四位。结合实际业务进行取舍。