The java.math.RoundingMode enumeration specifies a rounding behavior for numerical operations capable of discarding precision. Each rounding mode indicates how the least significant returned digit of a rounded result is to be calculated.
If fewer digits are returned than the digits needed to represent the exact numerical result, the discarded digits will be referred to as the discarded fraction regardless the digits' contribution to the value of the number. In other words, considered as a numerical value, the discarded fraction could have an absolute value greater than one.
This enum is intended to replace the integer-based enumeration of rounding mode constants in BigDecimal (BigDecimal.ROUND_UP, BigDecimal.ROUND_DOWN, etc. ).
Following is the declaration for java.math.RoundingMode enum −
public enum RoundingMode extends Enum<RoundingMode>
Following are the constants for java.math.RoundingMode enum −
CEILING − Rounding mode to round towards positive infinity.
DOWN − Rounding mode to round towards zero.
FLOOR − Rounding mode to round towards negative infinity.
HALF_DOWN − Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
HALF_EVEN − Rounding mode to round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor.
HALF_UP − Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up.
UNNECESSARY − Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary.
UP − Rounding mode to round away from zero.
Sr.No. | Method & Description |
---|---|
1 | static RoundingMode valueOf(int rm) This method returns the RoundingMode object corresponding to a legacy integer rounding mode constant in BigDecimal. |
2 | static RoundingMode valueOf(String name) This method returns the enum constant of this type with the specified name. |
3 | static RoundingMode[ ] values() This method returns an array containing the constants of this enum type, in the order they are declared. |
The following example shows the usage of math.RoundingMode methods.
package com.howcodex; import java.math.*; public class RoundingModeDemo { public static void main(String[] args) { // create 2 RoundingMode objects RoundingMode rm1, rm2; // create and assign values to rm and name int rm = 5; String name = "UP"; // static methods are called using enum name // assign the the enum constant of rm to rm1 rm1 = RoundingMode.valueOf(rm); // assign the the enum constant of name to rm2 rm2 = RoundingMode.valueOf(name); String str1 = "Enum constant for integer " + rm + " is " +rm1; String str2 = "Enum constant for string " + name + " is " +rm2; // print rm1, rm2 values System.out.println( str1 ); System.out.println( str2 ); String str3 = "Enum constants of RoundingMode in order are :"; System.out.println( str3 ); // print the array of enum constatnts using for loop for (RoundingMode c : RoundingMode.values()) System.out.println(c); } }
Let us compile and run the above program, this will produce the following result −
Enum constant for integer 5 is HALF_DOWN Enum constant for string UP is UP Enum constants of RoundingMode in order are : UP DOWN CEILING FLOOR HALF_UP HALF_DOWN HALF_EVEN UNNECESSARY