# BigDecimal byteValueExact() Method in Java

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:
`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 : -67
```
Below 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:
```Exact byte value of 47 is 47
```
Program 2:
 `// 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:
```BigDecimal value : -128.0564000
Rounded value : -128
Byte converted value : -128
```
Reference:https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#byteValueExact()

Previous
Next