import java.text.DecimalFormat;
import java.text.ParseException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* <p>DecimalUtil.java</p>
* <p>Decimal Utility</p>
* @author mshi
* @version 1.0 Jul 20, 2011 10:00:00 AM
*/
public class DecimalUtil {
private static Log logger = LogFactory.getLog(DecimalUtil.class);
private DecimalUtil(){}
/**
* 初始金额格式
*/
public static String MONEY_PATTERN = "#,##0.00#";
/**
* 初始数字格式
*/
public static String FLOAT_PATTERN = "#0.0########################";
/**
* 格式化金额(千分位)
* @param numStr
* @return
* @author mshi
*/
public static final double parseMoney(String numStr) {
return parse(numStr, MONEY_PATTERN);
}
/**
* 格式化数字
* @param numStr
* @return
* @author mshi
*/
public static final double parseNumber(String numStr) {
return parse(numStr, FLOAT_PATTERN);
}
/**
* 格式化
* @param numStr
* @param pattern 格式
* @return
* @author mshi
*/
public static final double parse(String numStr, String pattern) {
double decimal = 0;
try {
DecimalFormat decFmt = new DecimalFormat(pattern);
decimal = decFmt.parse(numStr).doubleValue();
} catch (ParseException e) {
logger.error("parse(String) parse error", e);
}
return decimal;
}
/**
* 格式化金额(千分位)
* @param numStr
* @return
* @author mshi
*/
public static final String formatMoney(double decimal) {
return format(decimal, MONEY_PATTERN);
}
/**
* 格式化数字
* @param numStr
* @return
* @author mshi
*/
public static final String formatNumber(double decimal) {
return format(decimal, FLOAT_PATTERN);
}
/**
* 格式化金额
* @param numStr
* @param pattern 格式
* @return
* @author mshi
*/
public static final String format(double decimal, String pattern) {
DecimalFormat decFmt = new DecimalFormat(pattern);
return decFmt.format(decimal);
}
}