📅  最后修改于: 2023-12-03 14:42:21.314000             🧑  作者: Mango
在Java中,java.math.RoundingMode
枚举用于指定数字的舍入规则。舍入是将一个数字调整为最接近的整数或指定位数的小数的过程。RoundingMode
枚举包含了8个不同的舍入模式,每个模式具有不同的行为。
RoundingMode
枚举包含以下8个舍入模式:
UP (上舍入)
- 当需要舍入的位数大于等于5时,数字将向上舍入。例如,4.5将舍入为5,-4.5将舍入为-4。DOWN (下舍入)
- 当需要舍入的位数大于等于5时,数字将向下舍入。例如,4.5将舍入为4,-4.5将舍入为-5。CEILING (向正无穷舍入)
- 数字将被调整为大于或等于原始数字的最小整数。例如,3.2将舍入为4,-3.2将舍入为-3。FLOOR (向负无穷舍入)
- 数字将被调整为小于或等于原始数字的最大整数。例如,3.8将舍入为3,-3.8将舍入为-4。HALF_UP (最近舍入,遇到5时向上)
- 当需要舍入的位数大于5时,数字将向上舍入;当需要舍入的位数等于5时,数字将向上舍入。例如,4.5将舍入为5,-4.5将舍入为-4。HALF_DOWN (最近舍入,遇到5时向下)
- 当需要舍入的位数大于5时,数字将向上舍入;当需要舍入的位数等于5时,数字将向下舍入。例如,4.5将舍入为4,-4.5将舍入为-5。HALF_EVEN (最近舍入,遇到5时向最近的偶数舍入)
- 当需要舍入的位数大于5时,数字将向上舍入;当需要舍入的位数等于5时,数字将向最近的偶数舍入。例如,4.5将舍入为4,5.5将舍入为6。UNNECESSARY (不需要舍入)
- 如果舍入是不必要的,将会抛出ArithmeticException
异常。要在代码中使用RoundingMode
枚举,首先需要导入java.math.RoundingMode
包:
import java.math.RoundingMode;
然后,可以使用其中一个舍入模式来进行数字舍入。以下示例演示了如何使用RoundingMode.HALF_UP
舍入模式将一个数字舍入到指定位数的小数:
import java.math.BigDecimal;
import java.math.RoundingMode;
public class RoundingExample {
public static void main(String[] args) {
BigDecimal number = BigDecimal.valueOf(3.14159);
int scale = 2; // 小数点后保留两位
BigDecimal roundedNumber = number.setScale(scale, RoundingMode.HALF_UP);
System.out.println("Original number: " + number);
System.out.println("Rounded number: " + roundedNumber);
}
}
上述示例中,使用setScale()
方法将number
数字舍入到2位小数,并使用RoundingMode.HALF_UP
舍入模式。结果将会是:
Original number: 3.14159
Rounded number: 3.14
java.math.RoundingMode
枚举提供了8个不同的舍入模式,可用于数字舍入。程序员可以根据需要选择适当的舍入模式来执行舍入操作。在使用舍入模式时,要注意处理可能的异常情况,如使用RoundingMode.UNNECESSARY
时可能会抛出ArithmeticException
异常。