BigInterger和BigDecimal


BigInterger

一、简介:

  1. BigInteger,大整型数。按字面意思理解就好这是一个超大的整数。
  2. 这是Java提供的用于存放超过“long”型的整数。
  3. 使用场景:当我们需要记录一个2000位的整数计算时咋办?使用字符串获取2000位的整数,再分割成Integer、Long大小范围内能接受的若干个小字符串转换。嗯,如果知道BigInteger类根本不用这么麻烦,直接创建一个BigInteger类对象加、减、乘、除都可以运算了。
  4. 官方文档

BigDecimal

一、简介:

  1. BigDecimal,大浮点数。按字面意思理解就是一个超大的浮点数,比Double类大多了也精确多了。
  2. 这是Java提供用于存储精度要求特别高的浮点数。
  3. 使用场景:请问钱应该那什么存储?不知道BigDecimal、不细心的人都会说Double。Double是错误的,答案是BigDecimal。请自己计算0.1的二进制数是多少?
  4. 官方文档

二、计算机不能精确存储小数的通病

  1. BigDecimal类不会化简,如:0.6存储在计算机内存中只能无限接近0.6。如果是用BigDecimal存储0.6打印输出的值为:“0.59999999999…”差不多就是这个数,BigDecimal是完全按照二进制存储0.6。

三、使用BigDecimal存储浮点数的好处:

  1. BigDecimal有八种舍入机制选择,人为可控性高。
  2. BigDecimal可以自定义Precision精确度,定义的很大也没有问题。
  3. BigDecimal存储浮点数时完全按照二进制存储没有任何的“化简修饰”。自定义精确度、自己选择舍入机制
     如下图:
    BigInterger和BigDecimal
    BigInterger和BigDecimal

谢谢观看上述如果错误的地方还望指出改正