📜  java zahlen runden auf 1 nachkommastelle - Java (1)

📅  最后修改于: 2023-12-03 15:01:32.815000             🧑  作者: Mango

Java中的舍入数字

在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类轻松地舍入数字,以达到我们想要的精度。我们可以指定所需的小数位数以及舍入模式。