java bigdecimal 格式化_java中对BigDecimal 进行格式化的一个小工具类

java 编程,如果涉及到金额的计算,最好采用Decimal 或者BigDecimal,原因是这样不会怎么丢精度,如果用其他类型会丢精度。但用Decimal 表示的数字,最终显示在界面上的时候,还是需要格式化的,否则很难看,这里贴一个在自己项目里用到的格式化工具类,如果要其他格式,可以按例子改.import java.math.BigDecimal;

import java.math.RoundingMode;

import java.text.DecimalFormat;

import java.text.ParseException;

public class NumberFormatUtil {

private final static DecimalFormat DF_2 = new DecimalFormat("#,##0.00");

private final static DecimalFormat DF_0 = new DecimalFormat("#,###");

private final static DecimalFormat DF_1 = new DecimalFormat("#,###.################################");

public static final RoundingMode ROUNDING_MODE_FOR_FORMAT_UTIL =RoundingMode.HALF_UP;

public static String formatTo2DecimalPlaces(BigDecimal num){

if(num==null){

num=BigDecimal.ZERO;

}

DF_2.setRoundingMode(ROUNDING_MODE_FOR_FORMAT_UTIL);

return DF_2.format(num);

}

public static String formatToNoZero(BigDecimal num){

if(num==null){

num=BigDecimal.ZERO;

}

DF_1.setRoundingMode(ROUNDING_MODE_FOR_FORMAT_UTIL);

return DF_1.format(num);

}

public static String formatTo0DecimalPlaces(BigDecimal num){

if(num==null){

num=BigDecimal.ZERO;

}

DF_0.setRoundingMode(ROUNDING_MODE_FOR_FORMAT_UTIL);

return DF_0.format(num);

}

public static String formatToPatternDecimalPlaces(BigDecimal num,String pattern){

if(num==null){

num=BigDecimal.ZERO;

}

return formatToInputDecimalPlaces(num,findDecimalPlaces(pattern));

}

public static String formatToInputDecimalPlaces(BigDecimal num,int places){

if(num==null){

num=BigDecimal.ZERO;

}

DecimalFormat df= new DecimalFormat();

df.setMaximumFractionDigits(places);

df.setMinimumFractionDigits(places);

df.setRoundingMode(ROUNDING_MODE_FOR_FORMAT_UTIL);

return df.format(num);

}

public static String readValue(String value){

return value.replaceAll(",", "");

}

public static int findDecimalPlaces(String pattern){

int decimalPlaces=0;

if(pattern!=null && !pattern.contains("1.0")){

int idx=pattern.indexOf(".");

while(idx < pattern.length()&&pattern.charAt(idx)!='1'){

idx++;

decimalPlaces++;

}

}

return decimalPlaces;

}

}

这样就可以实现 Decimal 或者 BigDecimal 的格式化了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值