I. Introduction of BigDecimal
Java.math.BigDecimal
Immutable immutable, arbitrary-precision, signed decimal number. The BigDecimal consists of an integer non-scaling value of arbitrary precision and a 32-bit integer scale (scales).
Scaling (scale) if it is zero or positive, the scale is the number of digits after the decimal point. If it is negative, the non-scaling value of the number is multiplied by the 10 negative scale power.
The value represented by BigDecimal is (Unscaledvaluex10^-scale).
There are two other classes associated with it:
Java.math.MathContext:
The object is an immutable object that encapsulates the context setting, which describes some rules of the numeric operator, such as the precision of the data, the rounding method, and so on.
Java.math.RoundingMode:
This is an enumeration type that defines a number of commonly used data rounding methods.
Second, rounding mode
(1) round_up
Rounds the rounding mode away from zero.
Such as:
1.x rounded to 2
-1.x rounded to-2
2, Round_down
Rounding mode of close to 0.
Such as:
1.x rounded to 1
-1.x rounded to-1
3, Round_ceiling
Rounding mode that is close to positive infinity.
If BigDecimal is positive, the rounding behavior is the same as round_up;
If negative, the rounding behavior is the same as Round_down.
Such as:
1.x rounded to 2
-1.x rounded to-1
4, Round_floor
Rounding mode that is close to negative infinity.
If BigDecimal is positive, the rounding behavior is the same as Round_down;
If negative, the rounding behavior is the same as round_up.
Such as:
1.x rounded to 1
-1.x rounded to-2
5, Round_half_up
Rounds the nearest number to the rounding mode that is rounded up if the distance to the two adjacent numbers is equal.
If part xi>= 5 is discarded, the rounding behavior is the same as round_up;
The xi<5 rounding behavior is the same as Round_down.
Such as:
1.4 Rounded to 1
1.5 Rounded to 2
-1.4 Rounded to-1
-1.5 rounded to-2
6, Round_half_down
Rounds the nearest number to the rounding mode that is rounded up if the distance to the two adjacent numbers is equal.
If Part XI > 5 is discarded, the rounding behavior is the same as round_up;
Xi <= 5 rounding behavior is the same as Round_down (five shekels six in).
1.6 Rounded to 2
1.5 Rounded to 1
-1.6 Rounded to-2
-1.5 rounded to-1
7, Round_half_even
Rounds to the nearest number, rounded to the adjacent even if the distance to the two adjacent numbers is equal:
If the left part of the discard number is odd, the rounding behavior is the same as round_half_up;
If an even number, the rounding behavior is the same as Round_half_down.
This rounding mode is also known as the Banker rounding method, mainly used in the United States. Four homes six in, five points two kinds of situation:
The first one is odd, then it is in place, otherwise it is gone.
Such as:
1.6 Rounded to 2
1.5 Rounded to 2
4.5 Rounded to 4
4.4 Rounded to 4
-1.6 Rounded to-2
-1.5 rounded to-2
-6.5 rounded to-6
-6.3 Rounded to-6
8, Round_unnecessary
Asserts that the requested operation has precise results and therefore does not require rounding.
Throws a arithmeticexception if this rounding mode is specified for operations that do not have precise results.
Such as:
4.0 rounded to 4
4.1 Rounding Throw ArithmeticException
Java BigDecimal Eight rounding modes