- 思考:一下程序输出结果是多少?
public class TestBigDecimal{
public static void main(String[] args){
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
}
}
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
Why???
。
。
。
。
。
。
- 因为float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。
BigDecimal的使用
-
位置:Java.math包中。
-
作用:精确计算浮点数。
-
创建方式:BigDecimal bd = new BigDecimal(“1.0”);
-
方法:
-
- BigDecimal add(BigDecimal bd) 加
-
- BigDecimal subtract(BigDecimal bd) 减
-
- BigDecimal multiply(BigDecimal bd) 乘
-
- BigDecimal divide(BigDecimal bd) 除
- 除法:divide(BigDecimal bd,int scal,RoundingMode mode)
- 参数scal:指定精确到小数点后几位。
- 参数mode:
- 指定小数部分的取舍模式,通常采用四舍五入的模式
- 取值为BigDecimal.ROUND_HALF_UP
-
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
// 面试题
double result = (1.4-0.5)/0.9;
System.out.pritln(result);
// 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);
// 因为10除以3会有余数,如果除不尽会出现报错,
// 所以我们这里加了int scal,RoundingMode mode两个参数
BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3")
,2,BigDecimal
.ROUND_HALF_UP);