The java.math.BigDecimal.byteValueExact() is an in-built function which converts the BigDecimal to a byte and checks for lost information. Any BigDecimal value greater than 127 or less than -128, will generate an exception as it doesn't fit in byte range.
Syntax:
Java
Java
public byte byteValueExact()Parameters: The method does not accept any parameters. Return Value:This method returns the byte value of the BigDecimal Object. Exception: This function throws ArithmeticException in case if the BigDecimal has a nonzero fractional part, i.e., in case of a decimal values, or is out of the possible range for a byte result. Examples:
Input : 127 Output : 127 Input : -67 Output : -67Below programs will illustrate the use of byteValueExact() Function: Program 1:
// Java program to demonstrate byteValueExact() method
import java.io.*;
import java.math.*;
public class GFG {
public static void main(String[] args)
{
// Creating a BigDecimal object
BigDecimal b;
// Creating a byte objects
byte bt;
b = new BigDecimal("47");
// Assigning the byte value of b to bt
bt = b.byteValueExact();
// Displaying the byte value
System.out.println("Exact byte value of " + b + " is " + bt);
}
}
Output:
Program 2:
Exact byte value of 47 is 47
// Java program to demonstrate byteValueExact() method
import java.io.*;
import java.math.*;
public class GFG {
public static void main(String[] args)
{
// Creating a BigDecimal object
BigDecimal b;
b = new BigDecimal("-128.0564000");
System.out.println("BigDecimal value : " + b);
long roundedValue = Math.round(b.doubleValue());
System.out.println("Rounded value : " + roundedValue);
// Rounding is necessary as the fractional part is not zero
// as well as exceeding the byte range of -128 to 127
b = new BigDecimal(roundedValue);
System.out.println("Byte converted value : " + b.byteValueExact());
}
}
Output:
Reference:https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#byteValueExact()BigDecimal value : -128.0564000 Rounded value : -128 Byte converted value : -128