1. 在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算 , float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal;
BigDecimal b1 = new BigDecimal("34.567");
BigDecimal b2 = new BigDecimal("1024");
//加
BigDecimal add = b1.add(b2);
BigDecimal bigDecimal1 = add.setScale(2, BigDecimal.ROUND_DOWN); //直接截取小数,删除多余位数
BigDecimal bigDecimal2 = add.setScale(2, BigDecimal.ROUND_UP); //进位处理
BigDecimal bigDecimal3 = add.setScale(2, BigDecimal.ROUND_HALF_DOWN); //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal bigDecimal4 = add.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入
//减
BigDecimal subtract = b2.subtract(b1);
BigDecimal subtract1 = subtract.setScale(2, BigDecimal.ROUND_DOWN); //直接截取小数,删除多余位数
BigDecimal subtract2 = subtract.setScale(2, BigDecimal.ROUND_UP); //进位处理
BigDecimal subtract3 = subtract.setScale(2, BigDecimal.ROUND_HALF_DOWN); //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal subtract4 = subtract.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入
//乘
BigDecimal multiply = b1.multiply(b2);
BigDecimal multiply1 = multiply.setScale(2, BigDecimal.ROUND_DOWN); //直接截取小数,删除多余位数
BigDecimal multiply2 = multiply.setScale(2, BigDecimal.ROUND_UP); //进位处理
BigDecimal multiply3 = multiply.setScale(2, BigDecimal.ROUND_HALF_DOWN); //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal multiply4 = multiply.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入
//除
BigDecimal divide = b1.divide(b2);
BigDecimal divide1 = divide.setScale(2, BigDecimal.ROUND_DOWN); //直接截取小数,删除多余位数
BigDecimal divide2 = divide.setScale(2, BigDecimal.ROUND_UP); //进位处理
BigDecimal divide3 = divide.setScale(2, BigDecimal.ROUND_HALF_DOWN); //四舍五入,2.35变成2.3,如果是5则向下舍
BigDecimal divide4 = divide.setScale(2, BigDecimal.ROUND_HALF_UP); //四舍五入
String s = divide.toString(); //将BigDecimal对象的数值转换成字符串。
double d = divide.doubleValue(); //将BigDecimal对象中的值以双精度数返回。
float f = divide.floatValue(); // 将BigDecimal对象中的值以单精度数返回。
long l = divide.longValue(); //将BigDecimal对象中的值以长整数返回。
int i = divide.intValue(); //将BigDecimal对象中的值以整数返回
// BigDecimal是通过使用compareTo(BigDecimal)来比较的(效率比double和float差)
BigDecimal a = new BigDecimal("1");
BigDecimal b = new BigDecimal("2");
BigDecimal c = new BigDecimal("1");
int result1 = a.compareTo(b);
System.out.println(result1); //-1
int result2 = a.compareTo(c);
System.out.println(result2); //0
int result3 = b.compareTo(a);
System.out.println(result3); //1