J2ME - Как преобразовать double в строку без представления степени 10 (E-05) - PullRequest
6 голосов
/ 13 марта 2011

У меня есть двойное значение.Я хочу сохранить его в строке без записи E (в J2ME)

Пример

Двойное значение 6.887578324E9 Хотите показать как 6887578342

Ответы [ 4 ]

6 голосов
/ 14 марта 2011

Вы можете создать свой собственный метод для этого или использовать уже существующую библиотеку. Javolution, например, дает вам класс и метод TypeFormat.format (double d, int digits, логическое научное, логическое showZero, добавляемый 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;
    }       


}
3 голосов
/ 22 октября 2012

Вы можете использовать Java Formatter, просто укажите, сколько десятичных знаков вы хотите с помощью строки.

Например, двойное число, преобразованное в число с одним десятичным знаком:

Formatter format = new Formatter();
String mystring = format.formatNumber(DOUBLENUMBERVARIABLE,1);
System.out.println(mystring );
3 голосов
/ 13 марта 2011

Посмотрите на эту статью: Преобразование Double в строку без E-обозначения

Вы можете использовать класс [NumberFormat][2] или [DecimalFormat][3], чтобы получить то, что вы ищете.

Вот код:

NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);
String refinedNumber = f.format(doubleVariable);
0 голосов
/ 29 марта 2012

Обычно вы можете использовать фрагмент кода ниже, но не для j2me.

BigDecimal.valueOf(doubleVariable)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...