java.math.BigDecimal.byteValueExact()是一个内置函数,它将BigDecimal转换为字节并检查丢失的信息。任何大于127或小于-128的BigDecimal值都将生成异常,因为它不适合字节范围。
用法:
public byte byteValueExact()
参数:该方法不接受任何参数。
返回值:此方法返回BigDecimal对象的字节值。
异常:如果BigDecimal具有非零小数部分(即十进制值)或超出字节结果的可能范围,则此函数引发ArithmeticException。
例子:
Input : 127
Output : 127
Input : -67
Output : -67
下面的程序将说明byteValueExact()函数的用法:
示例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);
}
}
输出:
Exact byte value of 47 is 47
示例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());
}
}
输出:
BigDecimal value : -128.0564000
Rounded value : -128
Byte converted value : -128