[java]代码库
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/*
* Java中保留小数点的方法
*/
public class GetNum {
public static void main(String[] args) {
System.out.println(getNum(0.23656,"#.0000",false));//.2365 不四舍五入,整数部分为0时省略
System.out.println(getNum(0.23656,"0.0000",false));//0.2365不进行四舍五入,整数部分为0时不省略
System.out.println(getNum(0.23656,"0.0000",true));//0.2366 进行四舍五入
System.out.println(getNum(0.236,"0.0000",true));//0.2366 进行四舍五入 不够的小数部分补零
//
// System.out.println(getNum2(0.23456,3));//精确小数点第三位,四舍五入
//System.out.println(getNum3(0.2345,3,false));//0.234
// System.out.println(getNum4(0.2345,3,false));//0.234
// System.out.println(getNum4(0.2345,3,true));//0.235
// System.out.println(getNum4(0.23,3,false));//0.23 没有补零
}
public static String getNum(double str,String pattern,boolean flag){
DecimalFormat format = new DecimalFormat(pattern);//保留小数点三位
if(flag) {
format.setRoundingMode(RoundingMode.UP);//进行四舍五入
} else {
format.setRoundingMode(RoundingMode.DOWN);//不进行四舍五入
}
return format.format(str);
}
public static String getNum2(double str , int decima) {
long n = 1;
for(int i = 1 ; i <= decima; i++ )
n *= 10;
return String.valueOf((int)(str * n +0.5) / (n * 1.0));
}
public static double getNum3(double str,int point, boolean flag){
BigDecimal b = new BigDecimal(str);
if(flag) {
return b.setScale(point, BigDecimal.ROUND_HALF_UP).doubleValue();
}
return b.setScale(point, BigDecimal.ROUND_HALF_DOWN).doubleValue();
}
public static String getNum4(double d,int point,boolean flag) {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(point); // 保留小数点位数
if(flag){
nf.setRoundingMode(RoundingMode.UP);//四舍五入
}else {
nf.setRoundingMode(RoundingMode.DOWN);// 不四舍五入
}
return nf.format(d);
}
}