J2ME - 如何将double转换为字符串而无需10次表示(E-05)

时间:2011-03-13 05:34:57

标签: java-me

我有双倍价值。我想将它存储在带有E符号的字符串中(在J2ME中)

示例

双值6.887578324E9 想要显示为6887578342

4 个答案:

答案 0 :(得分:6)

您可以创建自己的方法来执行此操作,也可以使用某些现有的库。 例如,Javolution为您提供了类和方法 TypeFormat.format(double d,int digits,boolean scientific,boolean showZero,Appendable a) 检查Javolution,它有很多不错的实用程序,但如果你需要的只是格式化数字,那么只需编写自己的方法。 这是对大数字的快速破解

    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;
    }       


}

答案 1 :(得分:3)

看一下这篇文章:Converting Double to String without E notation

您可以使用[NumberFormat][2][DecimalFormat][3]课程来实现您的目标。

以下是代码:

NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);
String refinedNumber = f.format(doubleVariable);

答案 2 :(得分:3)

您可以使用Java Formatter,只需指定字符串所需的小数位数。

E.g。双精度转换为带小数的一个数字:

Formatter format = new Formatter();
String mystring = format.formatNumber(DOUBLENUMBERVARIABLE,1);
System.out.println(mystring );

答案 3 :(得分:0)

通常你可以使用下面的代码,但不能使用j2me。

BigDecimal.valueOf(doubleVariable)