J2ME - How to convert double to string without the power to 10 representation (E-05)

后端 未结 4 1461
故里飘歌
故里飘歌 2021-01-18 08:15

I have a double value . I want to store it in String with out E notation (in J2ME)

Example

Double value 6.887578324E9 Want to show as 6887578342

4条回答
  •  無奈伤痛
    2021-01-18 09:10

    You can create your own method to do that, or use some already existing library. Javolution, for example, gives you the class and method TypeFormat.format(double d, int digits, boolean scientific, boolean showZero, Appendable a) Check Javolution, it has lots of nice utilities, but if the only thing you need is to format numbers, just write your own method. Here is a quick hack for big numbers

        private static String nosci(double d) {
        if(d < 0){
            return "-" + nosci(-d);
        }
        String javaString = String.valueOf(d);
        int indexOfE =javaString.indexOf("E"); 
        if(indexOfE == -1){
            return javaString;
        }
        StringBuffer sb = new StringBuffer();
        if(d > 1){//big number
            int exp = Integer.parseInt(javaString.substring(indexOfE + 1));
            String sciDecimal = javaString.substring(2, indexOfE);
            int sciDecimalLength = sciDecimal.length();
            if(exp == sciDecimalLength){
                sb.append(javaString.charAt(0));
                sb.append(sciDecimal);              
            }else if(exp > sciDecimalLength){
                sb.append(javaString.charAt(0));
                sb.append(sciDecimal);
                for(int i = 0; i < exp - sciDecimalLength; i++){
                    sb.append('0');
                }
            }else if(exp < sciDecimalLength){
                sb.append(javaString.charAt(0));
                sb.append(sciDecimal.substring(0, exp));
                sb.append('.');
                for(int i = exp; i < sciDecimalLength ; i++){
                    sb.append(sciDecimal.charAt(i));
                }
            }
          return sb.toString();
        }else{
            //for little numbers use the default or you will
            //loose accuracy
            return javaString;
        }       
    
    
    }
    

提交回复
热议问题