如何将Double转换为有效数字

时间:2014-05-20 07:22:31

标签: java rounding

我有一个应用程序,它读取SAS xpt文件并将列值存储到ByteBuffer中,然后使用它的getValue()方法获取Double对象。现在我必须在小数点后打印Double最多12位有效数字。我找到了一个答案,从中可以正常工作,但很少有案例

BigDecimal bd = new BigDecimal(dblColumnData.doubleValue());
System.out.println(String.format("%."+15+"G", bd));

这里给出 15 ,因为整数部分有3位数字,小数点后必须有12位有效数字。

不起作用的情况是因为BigDecimal来自Double。如果我打印Double,则它在十进制之后包含超过12位数,并且使用相同的上述方法正确舍入。

因此,我认为如果我能为Double获得类似的格式方法,它将解决我的问题。

1 个答案:

答案 0 :(得分:-1)

我会这样做:

static double roundTo(double d, int digit) {
    double exp = Math.pow(10, digit);
    d *= exp;
    d = Math.round(d);
    return d / exp;
}

以下内容会将数字四舍五入到逗号后面的3个位置并打印出来

public static void main(String[] args) {
    System.out.println(roundTo(7.34343434, 3));
}

将打印“7.343”