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