Home »
Java »
Java Reference »
Java BigDecimal Class
Java BigDecimal setScale() Method with Example
BigDecimal Class setScale() method: Here, we are going to learn about the setScale() method of BigDecimal Class with its syntax and example.
Submitted by Preeti Jain, on May 07, 2020
BigDecimal Class setScale() method
Syntax:
public BigDecimal setScale(int sc);
public BigDecimal setScale(int sc, int r_status);
public BigDecimal setScale(int sc, RoundingMode rm);
- setScale() method is available in java.math package.
- setScale(int sc) method is used to set the new scale with the given scale of this BigDecimal object.
- setScale(int sc, int r_status) method is used to set the new scale with the given scale value, and its non-scale value is calculated by either multiply or divide this BigDecimal non-scaled value by the power of 10.
- setScale(int sc, RoundingMode rm) method is used to set the new scale with the given scale value, and its non-scale value is calculated by either multiply or divide this BigDecimal non-scaled value by the power of 10.
-
These methods may throw an exception at the time of setting a scale.
- ArithmeticException: This exception may throw when the given parameter holds constants ROUND_UNNECESSARY and the given scaling operation need rounding.
- IllegalArgumentException: This exception may throw when the given parameter r_status is invalid.
- These are non-static methods and it is accessible with class objects and if we try to access these methods with the class name then we will get an error.
Parameter(s):
-
In the first case, setScale(int sc),
- int sc – represents the new scale value of this BigDecimal.
-
In the first case, setScale(int sc, int r_status),
- int sc – Similar as defined in the first case.
- int r_status – represents the rounding status.
-
In the first case, setScale(int sc, RoundingMode rm),
- int sc – Similar as defined in the first case.
- RoundingMode rm – represents the mode of rounding to implement and it is of "RoundingMode" type.
Return value:
In all the cases, the return type of the method is BigDecimal, it returns the BigDecimal object and its scale value is set by the given parameter and its unscale value is calculated by either divide or multiply this BigDecimal unscaled value by the power of 10.
Example:
// Java program to demonstrate the example
// of setScale() method of BigDecimal
import java.math.*;
public class SetScaleOfBD {
public static void main(String args[]) {
// Initialize a variables val
String val = "10.3045";
// Initialize a BigDecimal objects
BigDecimal b_dec = new BigDecimal(val);
System.out.println("scale(): ");
// Get old scale
int old_scale = b_dec.scale();
System.out.println("b_dec: " + b_dec);
System.out.println("b_dec.scale(): " + old_scale);
System.out.println(" ");
System.out.println("setScale(int): ");
// sets the new scale of this
// BigDecimal b_dec and scale is the
// number of digits represented after
// decimal
BigDecimal bd = b_dec.setScale(5);
// Get new set scale
int new_scale = bd.scale();
System.out.println("b_dec: " + bd);
System.out.println("b_dec.setScale(5): " + new_scale);
System.out.println(" ");
System.out.println("setScale(int,int): ");
// sets the new scale of this
// BigDecimal b_dec with the given rounding
// mode "2"
bd = b_dec.setScale(3, 2);
// Get new set scale
new_scale = bd.scale();
System.out.println("b_dec: " + bd);
System.out.println("bd.setScale(3,2): " + new_scale);
System.out.println(" ");
System.out.println("setScale(int,RoundingMode): ");
// sets the new scale of this
// BigDecimal b_dec with the given RoundingMode
// RoundingMode.CEILING
bd = b_dec.setScale(3, RoundingMode.CEILING);
// Get new set scale
new_scale = bd.scale();
System.out.println("b_dec: " + bd);
System.out.println("b_dec.setScale(3,RoundingMode.CEILING): " + new_scale);
}
}
Output
scale():
b_dec: 10.3045
b_dec.scale(): 4
setScale(int):
b_dec: 10.30450
b_dec.setScale(5): 5
setScale(int,int):
b_dec: 10.305
bd.setScale(3,2): 3
setScale(int,RoundingMode):
b_dec: 10.305
b_dec.setScale(3,RoundingMode.CEILING): 3