BigDecimal的使用
- 位置: java.math包中。
- 作用:精确计算浮点数。
- 创建方式:BigDecimal bd=new BigDecimal (“1.0”);
- 方法:
- BigDecimal add(BigDecimal bd) 加
- BigDecimal subtract(BigDecimal bd) 减
- BigDecimal multiply(BigDecimal bd) 乘
- BigDecimal multiply(BigDecimal bd) 除
package com.oop.Demo11;
import java.math.BigDecimal;
public class demo07 {
public static void main(String[] args) {
//double损失精度
double d1=1.0;
double d2=0.9;
System.out.println (d1-d2);//0.09999999999999998
//面试题
double result=(1.4-0.5)/0.9;
System.out.println (result);//0.9999999999999999
}
}
package com.oop.Demo11;
import java.math.BigDecimal;
public class demo07 {
public static void main(String[] args) {
//BigDecimal,大的浮点数精确计算
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);
//除不尽时ROUND_HALF_UP四舍五入
BigDecimal r5=new BigDecimal ("10").divide (new BigDecimal (3),2,BigDecimal.ROUND_HALF_UP);
System.out.println (r5);
}
}
- 除法:divide (BigDecimal bd,int scal, RoundingMode mode)
- 参数scal :指定精确到小数点后几位。
- 参数mode:
- 指定小数部分的取舍模式,通常采用四舍五入的模式,
- 取值为BigDecimal.ROUND_HALF_UP。