2013-06-25 4 views
5

ich an einer Aufgabe zu arbeiten, wo ichWie ein Doppel mit variabler Betrag von Dezimalstellen zu formatieren

unten, um ein negatives Szenario Behandlung Wenn der Wert kleiner als 1 ist, dann möchte ich (add) zu formatieren erwähnt geschlagen wurde 4 Dezimalpunkte dazu.

Zum Beispiel, wenn der Wert 0,4567 ist dann brauche ich 0,4567

Oder aber, wenn der Wert größer als 1-Format mit nur 2 Ziffern.

Zum Beispiel, wenn der Wert 444,9 dann brauche ich 444,90

Alles oben erwähnt funktioniert gut, aber dazu weiter unten Bedingung schlug

Das heißt, wenn der Wert kleiner als 1 ist, und es endet als Nullen (0.1000, 0.6000), Es macht keinen Sinn 0,2000 zu drucken, so dass in diesem Fall, dass ich die Ausgabe nur sein will als 0,20

das ist mein Programm unter

ist
package com; 
import java.text.DecimalFormat; 
public class Test { 
    public static void main(String args[]) { 
     try { 
      String result = ""; 
      Test test = new Test(); 
      double value = 444.9; 
      if (value < 1) { 
       result = test.numberFormat(value, 4); 
      } else { 
       result = test.numberFormat(value, 2); 
      } 
      System.out.println(result); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    public String numberFormat(double d, int decimals) { 
     if (2 == decimals) 
      return new DecimalFormat("#,###,###,##0.00").format(d); 
     else if (0 == decimals) 
      return new DecimalFormat("#,###,###,##0").format(d); 
     else if (3 == decimals) 
      return new DecimalFormat("#,###,###,##0.000").format(d); 
     else if (4 == decimals) 
      return new DecimalFormat("#,###,###,##0.0000").format(d); 
     return String.valueOf(d); 
    } 

} 
+0

Eine Bedingung basierend auf x < 1 || x > = 1, dann, wenn es <1 ist und mit "00" endet, schneiden sie ab? –

Antwort

6

Verwendung # wollen, wenn Sie 0 im 3. und 4. Dezimalstellen ignorieren

new DecimalFormat("#,###,###,##0.00##").format(d) 
+1

wenn es funktioniert, ist diese Antwort definitiv besser als meine :) – Dariusz

+0

@ Dariusz- Es sollte funktionieren. Probier es aus. – chetan

+0

@chetan wirklich tolle Antwort, vielen Dank. – Pawan

0

nur einen String mit vier Ziffern machen und prüfen Sie Nullen für Hinter. Wenn zwei oder weniger Nullen vorhanden sind, entfernen Sie sie. Ansonsten lass es so wie es ist.

result = test.numberFormat(value, 4); 
if (result.endsWith("00")) { 
    result=result.substring(0, result.length()-2); 
} else if (result.endsWith("0")) { 
    result=result.substring(0, result.length()-1); 
} 

Es mag nicht optimal sein, aber es ist einfach zu lesen und zu warten.

+0

@chetan, es scheint ein Fehler, wenn der Wert 0,0007 ist (endet mit 3 Nullen und einer Zahl) – Pawan

Verwandte Themen