0
点赞
收藏
分享

微信扫一扫

【Java】 小数位数 | 小数多少位 | 忽略无效0


一、说明

        1、静态工具方法,拿来即用

        2、静态常量自行定义

二、copy代码

1、求解小数位数

/**
* 计算小数位数
* @param val
* @return
*/
public static int calcDecimalNum(String val) {
System.out.println("val:" + val);
if (!StrUtils.isNum(val)) {
return DEFAULT_DECIMAL_NUM;
}
if (!val.contains(".")) {
// 整数
System.out.println("整数。。。");
return BigDecimal.ZERO.intValue();
}
String[] vals = val.split("\\.");
System.out.println("vals.length:" + vals.length);
if (vals.length != 2) {
// 多个小数点,非法,按6位返回
return DEFAULT_DECIMAL_NUM;
}
String decimalVal = vals[1];
char[] decimalNums = decimalVal.toCharArray();
int invalidZeroCount = 0;
for (int i = decimalNums.length - 1; i > -1; i--) {
if ('0' == decimalNums[i]) {
invalidZeroCount++;
continue;
}
break;
}
// 小数部分总长度 - 无效0个数
return decimalNums.length - invalidZeroCount;
}

2、StrUtils.isNum(val)

/**
*
* @param val
* @return true: 数字
*/
public static boolean isNum(String val) {
try {
new BigDecimal(val);
return true;
} catch (Exception e) {
return false;
}
}

3、DEFAULT_DECIMAL_NUM

private static int DEFAULT_DECIMAL_NUM = 6;

举报

相关推荐

0 条评论