通常我们需要精确计算的时候会选择java.math.BigDecimal来进行计算。这篇博客主要介绍BigDecimal的方法和使用,主要分为三部分:BigDecimal介绍,为什么更精确;BigDecimal的方法。
介绍
Java中基础的小数的数据类型为float和double,他们在计算机底层是通过二进制分别表示指数和尾数来进行存储时,故造成存储时失去准确性。比如输入下面代码:
System.out.println(0.8-0.1);
结果为0.7000000000001。而BigDecimal使用十进制(BigInteger)+ 小数点位置(scale)来表示,更准确
奇奇怪怪的对不对,可以参见Java的BigDecimal如何解决浮点数精度问题这篇博客,比较详细解释浮点数的存储,以及如何转换成BigDecimal,写的很好。当然,如果你只是想要使用BigDecimal,可以记住结论然后我们开始看下一部分。
BigDecimal方法
一下内容均翻译理解自官方文档:https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html,其中的参数名为scale的都是指小数点位数。
1、构造函数:BigDecimal的构造函数多达16个,这里就不都翻译了