2016-06-08 6 views
2

Ich versuche, Währung in einer Java-Anwendung zu formatieren, also habe ich einen CurrencyFormatter geschrieben. Ich versuche, in Form 123,456,789.00 € zu formatieren, und das funktioniert lokal, aber wenn ich auf mein Unternehmen Server bereitstellen, werden die Variablen gezeigt wie $ 123,456,789.00Java.Locale Irland

Hier ist mein Code:

import java.text.NumberFormat; 
import java.util.Locale; 

public class CurrencyFormatter { 
    private static final Log log = Log.getLog(CurrencyFormatter.class); 

    public static String getEuroFormat(Double num) { 
    log.info("Formatting: " + num + " to euros"); 
    Locale ireland = new Locale("en","IE"); 
    NumberFormat irelandFormat = NumberFormat.getCurrencyInstance(ireland); 
    return irelandFormat.format(num); 
    } 
} 

Jede Beratung über Wie würde ich mein Problem lösen?

+0

Ich denke, Sie haben das Gebietsschema falsch, siehe http://stackoverflow.com/questions/4375410/recommended-way-to-format-number-in-a-locale-aware-way –

+0

Es funktioniert, wenn Sie 'verwenden Locale.UK' in 'NumberFormat.getCurrencyInstance (Locale.UK);'? –

+0

Das Problem ist, dass es eine irische Anwendung ist, die in Euro angezeigt werden muss, keine britische Anwendung, die in Pfund anzeigt. – JellyTots

Antwort

1

Der Code sieht für mich richtig aus. Meine Vermutung wäre, dass das Gebietsschema en_IE auf dem Server fehlt. Sie können überprüfen, welche Ländereinstellungen von einem Anruf unter NumberFormat.getAvailableLocales() unterstützt werden.

0

Für dieses Problem konnte ich dieses Gebietsschema nicht zum Server hinzufügen, daher entwickelte ich die folgende Problemumgehung, um mein Problem zu beheben.

import java.text.DecimalFormat; 
import java.text.NumberFormat; 
import java.util.Locale; 

    public class CurrencyFormatter{ 
     public static String getEuroFormat(Double num){ 
      String pattern="\u20ac###,###.##"; 
      DecimalFormat euroFormatter = new DecimalFormat(pattern); 
      String output = euroFormatter.format(num); 
      return output; 
     } 
    } 

Anstatt zu versuchen, (und andernfalls) Gebietsschema zu verwenden, implementiert I einen Formatierer durch einen Rüttler (oben) zu schaffen, und Durchleiten dieses Musters bis hin zu einem Objekt DecimalFormat. Ich habe das dann benutzt, um meine Eingaben zu formatieren.