- 很多实际应用中需要精确运算,而double是近似值存储,不再符合要求,需要借助BigDecimal
package com.jacyzhu.bigdecimal;
public class Dem01 {
public static void main(String[] args) {
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
}
}
BigDecimal
- 位置:java,math包中
- 作用:精确计算浮点数
- 创建方式:
BigDecimal bd = new BigDecimal("1.0"); - 注意:
- 除法:
divide(BigDecimal bd, int scal, RoundingMode mode) - 参数scal:指定精确到小数点后几位
- 参数mode:指定小数部分的取舍模式,通常采用四舍五入的模式。取值为
BigDecimal.ROUND_HALF_UP
- 除法:
package com.jacyzhu.bigdecimal;
import java.math.BigDecimal;
public class Demo02 {
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); // 0.1
// 加法
BigDecimal r2 = bd1.add(bd2);
System.out.println(r2); // 1.9
// 乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3); // 0.90
// 除法
BigDecimal r4 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
System.out.println(r4); // 1
BigDecimal r5 = new BigDecimal("20").divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP); // 四舍五入,保留两位小数
System.out.println(r5); // 6.67
}
}
运行结果:
0.1
1.9
0.90
1
6.67
版权声明:本文为zsl2010zsl原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。