我有一个应用程序,它读取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
获得类似的格式方法,它将解决我的问题。
答案 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”