Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java取整问题_Java - Fatal编程技术网

Java取整问题

Java取整问题,java,Java,我有一个例子,如果浮点值是74.126,它被四舍五入到74.13,即小数点后两位。但如果该值为74.125,则应四舍五入为74.12 请帮助我实现这种舍入方法 提前谢谢。您大概是在用数学进行舍入。舍入(浮点a)?如果是这样的话,javadocs解释了舍入是如何比我在这里解释的更好 您可能需要查看BigDecimal类,因为它提供了一个round(MathContext mc)方法,允许您指定不同的舍入模式,例如HALF\u DOWN 编辑: 如果只想设置小数位数,可以使用setScale方法进行

我有一个例子,如果浮点值是74.126,它被四舍五入到74.13,即小数点后两位。但如果该值为74.125,则应四舍五入为74.12

请帮助我实现这种舍入方法


提前谢谢。

您大概是在用
数学进行舍入。舍入(浮点a)
?如果是这样的话,javadocs解释了舍入是如何比我在这里解释的更好

您可能需要查看
BigDecimal
类,因为它提供了一个
round(MathContext mc)
方法,允许您指定不同的舍入模式,例如
HALF\u DOWN

编辑: 如果只想设置小数位数,可以使用
setScale
方法进行设置

float f = 74.125f;
BigDecimal b = new BigDecimal(f).setScale(2, RoundingMode.HALF_DOWN);

我建议您使用
BigDecimal
而不是
float
,因为这是一种更自然的表示法,十进制数字有意义

但是,我认为您实际上并不需要
round
方法,因为它处理的是精度而不是比例。我认为您需要设置刻度,如下所示:

import java.math.*;
public class Test {
  public static void main(String[] args) {
    roundTo2DP("74.126");
    roundTo2DP("74.125");
  }

  private static void roundTo2DP(String text) {
    BigDecimal before = new BigDecimal(text);
    BigDecimal after = before.setScale(2, RoundingMode.HALF_DOWN);
    System.out.println(after);
  }
}

当x.5时,标准的计算方法是向上取整,当小于x.5时,标准的计算方法是向下取整