BigDecimal使用常见错误:初始化不精确,与0比较,除数为0

您所在的位置:网站首页 bigdecimal计算除法 BigDecimal使用常见错误:初始化不精确,与0比较,除数为0

BigDecimal使用常见错误:初始化不精确,与0比较,除数为0

2024-07-15 11:55| 来源: 网络整理| 查看: 265

 

结论: BigDecimal初始化小数时,尽量用字符串形式,例如new BigDecimal("0.1");BigDecimal类型变量比较大小时用compareTo方法,判断变量值是否为0,与BigDecimal.ZERO比较大小。BigDecimal作除法时,除了要考虑除数是否为0,更要考虑是否能除尽的问题,直接调用BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)方法做除法可以避免除不尽的问题。   初始化BigDecimal变量:

 

//BigDecimal初始化 public static void testBigDecimalinit() { BigDecimal num1 = new BigDecimal(0.1); System.out.println("坑点1:num1="+num1);//坑点1:num1=0.1000000000000000055511151231257827021181583404541015625 BigDecimal num2 = new BigDecimal("0.1"); System.out.println("正确写法:num2="+num2);//正确写法:num2=0.1 }

 

结论:尽量用字符串的形式初始化,因为小数在计算机内部根本没法精确表示。 

 

比较大小

比较BigDecimal类型的变量和0的大小,用compareTo,不要用equals:

if (num1.compareTo(BigDecimal.ZERO)>0) if (num1.compareTo(BigDecimal.ZERO)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3