📅  最后修改于: 2023-12-03 15:01:32.815000             🧑  作者: Mango
在Java中,我们经常需要处理数字,有时需要舍入数字。这可以通过使用BigDecimal类实现。下面是一些Code Snippets,可以帮助你舍入数字。
我们可以使用setScale
方法将数字舍入到指定的小数位数。这个方法返回一个新的BigDecimal对象。以下是一个例子。
double number = 123.456789;
BigDecimal bd = new BigDecimal(number);
bd = bd.setScale(1, RoundingMode.HALF_UP);
System.out.println("原始数字: " + number);
System.out.println("舍入后的数字: " + bd.doubleValue());
输出结果:
原始数字: 123.456789
舍入后的数字: 123.5
在上面的例子中,我们将原始数字舍入到1位小数,使用的是HALF_UP
舍入模式。在这个模式下,我们将四舍五入到最近的数字。
如果我们想将数字四舍五入到整数,我们可以将小数位数设置为0。例如:
double number = 123.456789;
BigDecimal bd = new BigDecimal(number);
bd = bd.setScale(0, RoundingMode.HALF_UP);
System.out.println("原始数字: " + number);
System.out.println("舍入后的数字: " + bd.doubleValue());
输出结果:
原始数字: 123.456789
舍入后的数字: 123.0
在上面的例子中,我们将原始数字四舍五入到整数,使用的是HALF_UP
舍入模式。
Java的RoundingMode
枚举类中定义了一些常见的舍入模式:
UP
:向远离零的方向舍入DOWN
:向靠近零的方向舍入CEILING
:向正无穷大的方向舍入(向上舍入)FLOOR
:向负无穷小的方向舍入(向下舍入)HALF_UP
:四舍五入HALF_DOWN
:五舍六入HALF_EVEN
:银行家舍入法(四舍六入五考虑,五后非零就进一,五后为零看奇偶,如果前一位是奇数,则进一,否则不进)UNNECESSARY
:抛出异常,在需要严格舍入模式的情况下使用比如,下面的代码舍入到整数,并使用不同的舍入模式:
double number = 123.456789;
BigDecimal bd = new BigDecimal(number);
bd = bd.setScale(0, RoundingMode.UP);
System.out.println("UP模式舍入整数: " + bd);
bd = bd.setScale(0, RoundingMode.DOWN);
System.out.println("DOWN模式舍入整数: " + bd);
bd = bd.setScale(0, RoundingMode.CEILING);
System.out.println("CEILING模式舍入整数: " + bd);
bd = bd.setScale(0, RoundingMode.FLOOR);
System.out.println("FLOOR模式舍入整数: " + bd);
bd = bd.setScale(0, RoundingMode.HALF_UP);
System.out.println("HALF_UP模式舍入整数: " + bd);
bd = bd.setScale(0, RoundingMode.HALF_DOWN);
System.out.println("HALF_DOWN模式舍入整数: " + bd);
bd = bd.setScale(0, RoundingMode.HALF_EVEN);
System.out.println("HALF_EVEN模式舍入整数: " + bd);
输出结果:
UP模式舍入整数: 124
DOWN模式舍入整数: 123
CEILING模式舍入整数: 124
FLOOR模式舍入整数: 123
HALF_UP模式舍入整数: 123
HALF_DOWN模式舍入整数: 123
HALF_EVEN模式舍入整数: 123
在上面的例子中,我们设置了舍入模式,并且将数字舍入到整数。
在Java中,我们可以使用BigDecimal类轻松地舍入数字,以达到我们想要的精度。我们可以指定所需的小数位数以及舍入模式。