Excel默认对超出 11位的数字以科学计数法表示
需要注意的是一般的科学表达式是
1.8E12 1.8E-12
而在Excel中的科学表达式是
1.8E+12 1.8E-12
我写的科学计数法的正则表达式是
(-?\d+.?\d*)[Ee]{1}[+-]?[0-9]*
核心代码:
package com.xiuqi.zgcc.util;
import org.apache.commons.lang3.StringUtils;
import java.text.DecimalFormat;
/**
* Decimal数值处理工具类
*
* @Author liuxin
* @Date 2020/8/12
*/
public class XQDecimalUtils {
/**
*科学计数法解析
* Excel文件上传数值时,【Excel默认对超出 11 位的数字以科学计数法表示】
* Excel科学计数法格式【1.8E+12 或 1.8E-12】
* 标准科学计数法格式【1.8E12 或 1.8E-12】
*
* @Author liuxin
* @Date 2020/8/12
*/
public static String read4ScientificCounting(DecimalFormat decimalFormat, String number) {
String pattern = "^\\-?\\d+\\.\\d+[Ee][+-]?\\d+$";
if (StringUtils.isNotEmpty(number) && number.matches(pattern)) {
return decimalFormat.format(Double.parseDouble(number)).trim();
}
return number;
}
}