BigDecimal
发布时间:2020-12-15 05:28:08 所属栏目:Java 来源:网络整理
导读:https://www.jianshu.com/p/2947868d76eb 大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。 1、构建BigDecimal BigDecimal BigDecimal ( double d); //不允许使用,精度不能保证 BigDecimal BigDecimal (String s); //常用,推荐使用 stat
https://www.jianshu.com/p/2947868d76eb大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。1、构建BigDecimal BigDecimal BigDecimal(double d); //不允许使用,精度不能保证 BigDecimal BigDecimal(String s); //常用,推荐使用 static BigDecimal valueOf(double d); //常用,推荐使用
2、方法
@Test private void test(){ BigDecimal a = new BigDecimal(100); BigDecimal b = new BigDecimal(1000); BigDecimal c = new BigDecimal(100); BigDecimal d = new BigDecimal(-100); BigDecimal e = new BigDecimal(0); //a,b,c相加 BigDecimal add = a.add(b).add(c); System.out.println(add); //a,b相减 BigDecimal subtract = a.subtract(b); System.out.println(subtract); //a,b相乘 BigDecimal multiply = a.multiply(b); System.out.println(multiply); //b,a相除 BigDecimal divide = b.divide(a); System.out.println(divide); //用signum函数判断数字是大于0,等于0,小于0 int signumA = a.signum(); System.out.println(String.format("%s,signum值为%s",a,signumA)); int signumD = d.signum(); System.out.println(String.format("%s,signum值为%s",d,signumD)); int signumE = e.signum(); System.out.println(String.format("%s,signum值为%s",e,signumE)); } ? 1200 -900 100000 10 100,signum值为1 -100,signum值为-1 0,signum值为0 ? ? ? ? 3、格式化和四舍五入 // 格式化:保留2为小数 DecimalFormat df = new DecimalFormat("#.##"); // 四舍五入,默认五舍六入 df.setRoundingMode(RoundingMode.HALF_UP);
4、格式化
5、舍入模式介绍
5.5 => 6 1.1 => 2 -1.0 => -1 -2.5 => -2
5.5 => 5 1.1 => 1 -1.0 => -1 -1.6 => -1
5.5 => 5 2.3 => 2 1.0 => 1 -1.1 => -2 -2.5 => -3
2.5 => 2 1.6 => 2 -1.1 => -1 -1.6 => -2 -2.5 => -2
5.5 => 6 2.5 => 2 1.1 => 1 -1.0 => -1 -1.6 => -2 -2.5 => -2
2.5 => 3 1.1 => 1 -1.1 => -1 -1.6 => -2
1.5 => 抛出 ArithmeticException 1.1 => 抛出 ArithmeticException 1.0 => 1 -1.1 =>抛出 ArithmeticException -1.6 => 抛出 ArithmeticException
5.5 => 6 1.1 => 2 -1.1 => -2 -1.6 => -2
问题
?? 作者:九都散人链接:https://www.jianshu.com/p/2947868d76eb来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |