为什么要用BigDecimal
- 原因很简单,因为像一些精准的数字基本类型没有办法满足
代码1
double num1 = 1.0;
double num2 = 0.9;
System.out.println((num1-num2));
- 按照正常思维,1减去0.9应该是0.1才对,但是这里double结果却输出了一个相近的近似值
- 所以我们可以发现double类型不适合一些精准的数据计算,例如银行的计算
- 所以我们就需要用到BigDecimal这个类的算法
BigDecimal
- 位置:java.math包下
- 作用:精准计算浮点数
- 创建方式:Bigdecimal name = new BigDecimal(“1.0”) (注意是字符串类型,因为BigDecimal会使用一些算法让他转换为数字)
- 方法:add(name)//加
- subtract(name)//减
- multiply(name)//乘
- devide(name)//除
注意,如果不想一开始就创建数字,就必须在式子中实例化这个东西,等下会看到
package blogtest.oop2.bigdecimal;
import java.math.BigDecimal;
public class Demo01 {
public static void main(String[] args) {
double num1 = 1.0;
double num2 = 0.9;
System.out.println((num1-num2));
BigDecimal number1 = new BigDecimal("1.0");
BigDecimal number2 = new BigDecimal("0.9");
BigDecimal result1 = number1.add(number2);
System.out.println(result1);
BigDecimal result2 = number1.subtract(number2);
System.out.println(result2);
BigDecimal result3 = number1.multiply(number2);
System.out.println(result3);
BigDecimal result4 = (new BigDecimal("1.4")
.subtract(new BigDecimal("0.9")))
.divide(new BigDecimal("2"));
System.out.println(result4);
BigDecimal result5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
System.out.println(result5);
System.out.println("------------------------------");
System.out.println(new BigDecimal("0.5").subtract(new BigDecimal("0.25")));
System.out.println((new BigDecimal("1.4").subtract(new BigDecimal("0.2")).divide(new BigDecimal("2"))));
}
}
- 如图所示,加减乘没什么,在除法这里,我们是在式子中进行实例化,最后再输出
- 还有下面的四舍五入,因为10除以3除不尽所以需要用到四舍五入的方法 2代表的是小数后保留几位,然后我们还需调用BigDecimal里面的四舍五入方法 ROUND_HALF_UP,然后输出
总结
- BigDecimal是用来计算一些精确的数字,例如银行中的金额,利息等等