我正在使用NumberFormat的format()方法在我的应用程序中格式化货币。获取货币实例时,我没有将任何语言环境传递给该方法。 我已将此代码部署到包含两个节点/服务器的应用群集中。有趣的是,在其中一个应用服务器上,formattedAmmt是$ xxxx.xx,但另一个是¤xxxx.xx。据我所知,这个字符是一个通用的货币符号,JDK在没有特定的语言环境时使用它。我的理解是否正确?如果是的话,为什么它应用于某个应用服务器而不是另一个?我们在app server / JVM属性中没有看到任何默认语言环境或此类属性。
double amount = xxxx.xx;
String formattedAmt = NumberFormat.getCurrencyInstance().format(amount);
PS:我正在将此应用程序部署到使用JDK 1.6的WebSphere应用服务器集群。
答案 0 :(得分:1)
基于java doc:https://docs.oracle.com/javase/6/docs/api/java/text/NumberFormat.html#getCurrencyInstance()
public static final NumberFormat getCurrencyInstance()
Returns a currency format for the current default locale.
它将基于服务器的当前区域设置。这就是为什么你可能有两个不同的行为。
如果要指定本地,则必须使用以下方法:
public static NumberFormat getCurrencyInstance(Locale inLocale)
Returns a currency format for the specified locale