package com.doumee.core.utils; 
 | 
  
 | 
import java.util.regex.Pattern; 
 | 
  
 | 
/** 
 | 
 * Java正则校验密码至少包含:字母数字特殊符号中的2种 
 | 
 */ 
 | 
import java.math.BigDecimal; 
 | 
import java.util.regex.Pattern; 
 | 
  
 | 
    public class ScientificNotationTUtil { 
 | 
        private static final Pattern SCIENTIFIC_NOTATION_PATTERN = 
 | 
                Pattern.compile("[+-]?\\d*(\\.\\d+)?[eE][+-]?\\d+"); 
 | 
  
 | 
        public static boolean isScientificNotation(String value) { 
 | 
            return SCIENTIFIC_NOTATION_PATTERN.matcher(value).matches(); 
 | 
        } 
 | 
  
 | 
        public static double convertScientificNotationToDouble(String scientificNotation) { 
 | 
            if (isScientificNotation(scientificNotation)) { 
 | 
                return (Double.parseDouble(scientificNotation)); 
 | 
            } else { 
 | 
                throw new IllegalArgumentException("The string is not in scientific notation."); 
 | 
            } 
 | 
        } 
 | 
        public static String convertToString(String numberStr) { 
 | 
            try { 
 | 
                // 尝试直接将字符串转换为BigDecimal 
 | 
                return new BigDecimal(numberStr)+""; 
 | 
            } catch (NumberFormatException e) { 
 | 
                // 如果转换失败,则尝试解析科学计数法 
 | 
                String[] parts = numberStr.split("E"); 
 | 
                if (parts.length == 2) { 
 | 
                    // 这是科学计数法,需要转换 
 | 
                    BigDecimal number = new BigDecimal(parts[0]); 
 | 
                    int exponent = Integer.parseInt(parts[1]); 
 | 
                    return number.scaleByPowerOfTen(exponent)+""; 
 | 
                } 
 | 
            } 
 | 
            return  numberStr; 
 | 
        } 
 | 
  
 | 
        public static BigDecimal convertScientificNotationToBigDecimal(String scientificNotation) { 
 | 
            if (isScientificNotation(scientificNotation)) { 
 | 
                return new BigDecimal(scientificNotation); 
 | 
            } else { 
 | 
                throw new IllegalArgumentException("The string is not in scientific notation."); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        public static void main(String[] args) { 
 | 
//            String scientificNotation = "1.23e+3"; 
 | 
//            String scientificNotation = "1.5345690888E10"; 
 | 
            String scientificNotation = "15345690888"; 
 | 
            System.out.println("Is scientific notation: " + isScientificNotation(scientificNotation)); 
 | 
            System.out.println("Converted to String: " + convertToString(scientificNotation)); 
 | 
//            System.out.println("Converted to BigDecimal: " + convertScientificNotationToBigDecimal(scientificNotation)); 
 | 
        } 
 | 
    } 
 |