做税务的公司离不开跟数字打交道,特别是后台代码各种转换,什么千分位分隔符之类的,不一一说了 就把我用到的小方法总结一下 以后用直接从这里拿,之后陆续总结,现在有科学计数法转成小数,给一个数字加千分位分隔符,将小数换成百分数展示,
/**
* 把科学记数法转成小数
*
* @param natation
* 需要转换的数字
* @param weishu
* 保留小数点的位数
* @return
*/
private static BigDecimal natationToCount(Object natation, int weishu) {
BigDecimal ret;
if (natation != null && "" != natation) {
if (natation instanceof BigDecimal) {
ret = (BigDecimal) natation;
} else {
ret = new BigDecimal(String.valueOf(natation));
}
} else {
return BigDecimal.ZERO;
}
if (weishu == 4) {
return ret.setScale(4, BigDecimal.ROUND_HALF_UP);
} else {
return ret.setScale(2, BigDecimal.ROUND_HALF_UP);
}
}
/**
* 千分位分隔符
*
* @param pattern
* @param bd
* @return
*/
public static String parseNumber(BigDecimal bd) {
DecimalFormat df = new DecimalFormat(",###,###.00");
String string = df.format(bd);
String dian = string.substring(0, 1);
if (dian.contains(".")) {
string = "0" + string;
}
if (string.contains("-.")) {
string = string.substring(2, string.length());
string = "-0." + string;
}
return string;
}
/**
* 将小数转换为百分比输出(保留四位小数)
*
* @param bd
* @return
*/
public static String parsesl(String str) {
BigDecimal setScale = MathUtils.isNull(str).setScale(4, BigDecimal.ROUND_HALF_DOWN);
NumberFormat nf = NumberFormat.getPercentInstance();
//设置保留的小数位数(4)
nf.setMaximumFractionDigits(4);
return nf.format(setScale.doubleValue());
}