BigDecimal使用常见错误:初始化不精确,与0比较,除数为0 |
您所在的位置:网站首页 › bigdecimal计算除法 › BigDecimal使用常见错误:初始化不精确,与0比较,除数为0 |
结论: 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 |