BigInterger和BigDecimal
分类:
文章
•
2023-10-14 17:33:59
BigInterger
一、简介:
- BigInteger,大整型数。按字面意思理解就好这是一个超大的整数。
- 这是Java提供的用于存放超过“long”型的整数。
- 使用场景:当我们需要记录一个2000位的整数计算时咋办?使用字符串获取2000位的整数,再分割成Integer、Long大小范围内能接受的若干个小字符串转换。嗯,如果知道BigInteger类根本不用这么麻烦,直接创建一个BigInteger类对象加、减、乘、除都可以运算了。
- 官方文档
BigDecimal
一、简介:
- BigDecimal,大浮点数。按字面意思理解就是一个超大的浮点数,比Double类大多了也精确多了。
- 这是Java提供用于存储精度要求特别高的浮点数。
- 使用场景:请问钱应该那什么存储?不知道BigDecimal、不细心的人都会说Double。Double是错误的,答案是BigDecimal。请自己计算0.1的二进制数是多少?
- 官方文档
二、计算机不能精确存储小数的通病
- BigDecimal类不会化简,如:0.6存储在计算机内存中只能无限接近0.6。如果是用BigDecimal存储0.6打印输出的值为:“0.59999999999…”差不多就是这个数,BigDecimal是完全按照二进制存储0.6。
三、使用BigDecimal存储浮点数的好处:
- BigDecimal有八种舍入机制选择,人为可控性高。
- BigDecimal可以自定义Precision精确度,定义的很大也没有问题。
-
BigDecimal存储浮点数时完全按照二进制存储没有任何的“化简修饰”。自定义精确度、自己选择舍入机制
如下图:
谢谢观看上述如果错误的地方还望指出改正