java.math类包下提供用于执行
任意精度整数算法 (BigInteger)
和
任意精度小数算法 (BigDecimal)
的类
MathContext则用于封装数学规则,比如说舍入精度,向上取还是向下取等
通常不建议用带浮点型来创建对象,因为浮点型存储的时候存的是近似值,会有精度损失。建议用String类型的构造创建对象
常用方法 add加 substrate减 multiply 乘 divide除 pow求余
BigDecimal底层代码的实现:无论你用什么构造,无论你传的参数是什么类型,都先转换成char数组。然后操作除非自己在创建对象的时候设置一个舍入规则,否则默认会辗转调用一个(char【】,int ,int,舍入规则)这四个参数队列的构造方法返回一个BigDecimal对象。
BigInteger 除提供任意精度之外,它类似于 Java 的基本整数类型,因此在 BigInteger 上执行的操作不产生溢出,也不会丢失精度。除标准算法操作外,BigInteger 还提供模 (modular) 算法、GCD 计算、基本 (primality) 测试、素数生成、位处理以及一些其他操作。 BigDecimal 提供适用于货币计算和类似计算的任意精度的有符号十进制数字。BigDecimal 允许用户对舍入行为进行完全控制,并允许用户选择所有八个舍入模式。