最近遇到许多标准化输出,需要输出固定位数的小数结果。
将程序中的double值精确到小数点后n位。可以四舍五入,也可以直接截断
这里给出一些输出方式:
用到的有Java的这几个包:
java.math.BigDecimal;
java.math.RoundingMode;
java.text.DecimalFormat;
java.text.NumberFormat;
这里分为两类进行说明,一类返回为double,一类返回为String
1.返回值为double类型:
public double decimalDouble(double number,int n){
//其中number为要格式化输出的double类型的数,n表示保留几位小数
//Function 01
return Math.round(number*Math.pow(10,n))/Math.pow(10,n);
//Function 02
BigDecimal bg = new BigDecimal(number).setScale(n, RoundingMode.UP);
return bg.doubleValue();
}
2.返回值为String类型:
public String decimalDouble(double number,int n) {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(n);
nf.setRoundingMode(RoundingMode.UP);
return nf.format(number);
}
最后再给出两个输出两位小数的实例:
public String decimalDouble(double number){
//Function 01
DecimalFormat df = new DecimalFormat("#.00");
return df.format(d);
//Function 02
return String.format("%.2f", d);
}
希望上面的方法对大家有帮助,大家有其他好的方法可以留言交流。谢谢