2017-06-23 5 views
0

Ich muss eine ganze Zahl in eine Dezimalzahl konvertieren und formatieren sie dann mit Genauigkeit 2, 3, 4 oder 5 dezimal je nach den Bedingungen des Zertifikats.Format Dezimalzahl nach der Konvertierung von Integer

So habe ich diesen Code verwendet:

public NumberFormat decimalFormatter = new DecimalFormat("#,##0.00"); 
    public static NumberFormat decimalFormatter3 = new DecimalFormat("#,##0.000"); 
    public static NumberFormat decimalFormatter4 = new DecimalFormat("#,##0.0000"); 
    public static NumberFormat decimalFormatter5 = new DecimalFormat("#,##0.00000"); 
    public void run(Integer numeroDecimali, Articoli articoli){ 
     if(numeroDecimali == null || numeroDecimali == 2) 
      super.setValueAt(articoli.getPrezzoTot()!=null ? 
        decimalFormatter.format(articoli.getPrezzoTot()) : "", rowIndex, 7); 
     else if(numeroDecimali == 3) 
      super.setValueAt(articoli.getPrezzoTot()!=null ? 
        decimalFormatter3.format(articoli.getPrezzoTot()) : "", rowIndex, 7); 
     else if(numeroDecimali == 4) 
      super.setValueAt(articoli.getPrezzoTot()!=null ? 
        decimalFormatter4.format(articoli.getPrezzoTot()) : "", rowIndex, 7); 
     else if(numeroDecimali == 5) 
      super.setValueAt(articoli.getPrezzoTot()!=null ? 
        decimalFormatter5.format(articoli.getPrezzoTot()) : "", rowIndex, 7); 

ich die Anzahl der Nachkommastellen setzen und mit DecimalFormat (2,3,4,5) ich den Text formatieren. Dieser Code funktioniert aber, gibt es eine Möglichkeit, dies ohne so viele IF-Anweisungen zu erreichen? Gibt es eine Möglichkeit, die Informationen von numeroDecimali zu kombinieren, um den Code zu optimieren?

+0

Ich stimme für das Schließen dieser Frage als Off-Topic ab, da Fragen zur Verbesserung des Arbeitscodes zu https://codereview.stackexchange.com/ gehören. –

Antwort

0

Man könnte so etwas wie folgt verwenden:

String.format("%,." + numeroDecimali + "f", articoli.getPrezzoTot()); 

Nur sicher machen, numeroDecimali hat einen gültigen Wert.

Verwandte Themen