java常用类:BigDecimal
BigDecimal
很多实际应用中需要精确运算,而double是近似值存储,不符合要求,需要借助BigDecimal用来对超过16位有效位的数进行精确的运算
-
位于 java.math包里
-
作用:精确计算浮点数
-
创建方式:BigDecimal bd=new BigDecimal("1.0");
-
BigDecimal一共有4个构造方法:
String 构造方法是完全可预知的:写入 newBigDecimal("0.1") 将创建一个 BigDecimal,它正好等于预期的 0.1
通常建议优先使用String构造方法BigDecimal(String)
public class Demo01 {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
//减法
BigDecimal r1 = bd1.subtract(bd2);
System.out.println(r1);
//加法
BigDecimal r2 = bd1.add(bd2);
System.out.println(r2);
//乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3);
//除法
BigDecimal r4 = new BigDecimal("1.4")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
System.out.println(r4);
//不能整除的情况,会报错java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
//public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
// 第一参数表示除数, 第二个参数表示小数点后保留位数,第三个参数表示舍入模式
//ROUND_HALF_UP 四舍五入
System.out.println(new BigDecimal("10")
.divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP));
}
}
//结果
//0.1
//1.9
//0.90
//1
//3.33

浙公网安备 33010602011771号