2016-06-08 49 views
2

我想格式化货币在一个Java应用程序,所以我写了CurrencyFormatter。我试图在形式€123,456,789.00格式化,而这个本地工作,但是当我部署到我公司的服务器中,变量显示为$ 123,456,789.00Java.Locale爱尔兰

这里是我的代码:

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); 
    } 
} 

任何意见上如何解决我的问题,将不胜感激。

+0

我认为你得到的语言环境错误,请参阅http://stackoverflow.com/questions/4375410/recommended-way-to-format-numbers-in-a-locale-aware-way –

+0

它的作品,如果你使用' 'NumberFormat.getCurrencyInstance(Locale.UK);'中的Locale.UK' –

+0

问题是它的爱尔兰应用程序,需要以欧元显示,而不是以英镑显示的英国应用程序。 – JellyTots

回答

1

该代码看起来很适合我。我的猜测是在服务器上缺少en_IE语言环境。您可以查看NumberFormat.getAvailableLocales()的呼叫支持哪些语言环境。

0

对于此问题,我无法将此语言环境添加到服务器,因此我开发了以下解决方法来解决我的问题。

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; 
     } 
    } 

而不是试图(和失败)使用区域设置,我通过创建一个图案(上文),以及使该图案通过到一个DecimalFormat对象实施的格式化。然后我用它来格式化我的输入。

相关问题