2013-06-05 4 views
2

я пытаюсь отобразить ведущий нуль десятичного используя десятичного формата ... Мой код выглядит следующим образом:дисплея ведущего нуля с использованием десятичного формата

import java.math.RoundingMode; 
import java.text.DecimalFormat; 
import java.text.ParseException; 

public class ElementValueUtil { 
    public static String formatDoubleNonExponential(double value) { 
     return formatDoubleNonExponential(value, null); 
    } 

    public static String formatDoubleNonExponential(double value, String elementName) { 
     DecimalFormat decimalFormat = new DecimalFormat(); 

     Integer decimalPrecision = 5; 
     decimalFormat.setMaximumFractionDigits(decimalPrecision); 
     decimalFormat.setRoundingMode(RoundingMode.HALF_UP); 
     String exponentialNum = decimalFormat.format(value); 
     try{ 
      return String.valueOf(decimalFormat.parse(exponentialNum)); 
     }catch(ParseException exception){ 
      return String.valueOf(value); 
     } 
    } 

    public static void main(String[] args) { 
     Double num = 12.4567012; 
     System.out.println(formatDoubleNonExponential(num)); 
    } 
} 

Я получаю выход, как «12.4567» Но я я ожидал «12,45670»

Любая помощь будет оценена ...

Примечание: Целая часть может иметь любое количество цифр или не может иметь любую цифру ... но фракция часть должна Округление до 5 знаков после запятой если оно имеет более 5 десятичных знаков

For example 
Input  Output 
12.25  12.25 
125.2345  125.2345 
12.12340675 12.12341 
12.1234.12340 

ответ

1

попробовать этот

static String format(double d) { 
    String s = new DecimalFormat("").format(d); 
    if (s.length() - s.indexOf(',') > 5) { 
     s = String.format("%.5f", d); 
    } 
    return s; 
} 

public static void main(String[] args) throws Exception { 
    System.out.println(format(12.25)); 
    System.out.println(format(125.2345)); 
    System.out.println(format(12.12340675)); 
    System.out.println(format(12.12340123)); 
} 

OUTPUT

12.25 
125.2345 
12.12341 
12.12340 
+0

Спасибо. Но это не удастся, когда я дам _12.25_, Результат будет показан как _12.25000_ вместо _12.25_. Поэтому я предпочитаю использовать «DecimalFormat». Но, к сожалению, он не показывает начальный ноль после округления его. – Bharani

+1

ОК. Просмотреть мое обновление –

Смежные вопросы