如果你觉得 long 和 double 不能满足你的要求, Java还提供了两个表示大数值的类 BigInteger 和 BigDecimal.
它们提供了任意精度, 要想对它们进行数学运算, 需要调用它们提供的方法而不是运算符, 加减乘除分别是add, subtract, divide 和 multiply方法.
要想对 BigDecimal 进行运算, 以下两个概念你必须清楚.
精度(precision) 指的是所有数字的位数.
四舍五入的方式(Rounding Mode)相对好理解, BigDecimal 支持如下四舍五入方式.
数字 |
UP |
DOWN |
CEILING |
FLOOR |
HALF_UP |
HALF_DOWN |
HALF_EVEN |
5.5 |
6 |
5 |
6 |
5 |
6 |
5 |
6 |
2.5 |
3 |
2 |
3 |
2 |
3 |
2 |
2 |
1.6 |
2 |
1 |
2 |
1 |
2 |
2 |
2 |
1.1 |
2 |
1 |
2 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1.1 |
-2 |
-1 |
-1 |
-2 |
-1 |
-1 |
-1 |
-1.6 |
-2 |
-1 |
-1 |
-2 |
-2 |
-2 |
-2 |
-2.5 |
-3 |
-2 |
-2 |
-3 |
-3 |
-2 |
-2
|
-5.5 |
-6 |
-5 |
-5 |
-6 |
-6 |
-5 |
-6 |