如何将Double值四舍五入到两个精度

时间:2013-09-12 06:30:56

标签: java math

我有一个Double值Double val = 49.569632

如何对val进行综合以获取49.57

2 个答案:

答案 0 :(得分:5)

您可以使用DecimalFormat

double d = 4.569632;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

或者你可以像Luiggi Mendoza所建议的那样使用这个answer中提到的方法。

public static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();

    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(places, BigDecimal.ROUND_HALF_UP);
    return bd.doubleValue();
}

答案 1 :(得分:1)

一种简单的圆形方法是打印时

double val = 49.569632; // this should be a primitive, not an object
System.out.printf("%.2f%n", val);

或者您可以先对值进行舍入

double rounded = Math.round(val * 1e2) / 1e2;
System.out.println(rounded);

恕我直言如果您知道自己在做什么,使用BigDecimal比使用double更慢,更复杂并且不易出错。我知道很多开发人员更喜欢使用库而不是自己编写代码。 ;)