2016-08-16 13 views
0

NumberFormatのformat()メソッドを使用して、アプリケーションで通貨をフォーマットしています。通貨インスタンスを取得する際に、メソッドにロケールを渡していません。 2つのノード/サーバーを含むアプリケーションクラスターにこのコードをデプロイしました。興味深いことに、アプリケーションサーバーの1つで、formattedAmmtは$ xxxx.xxですが、もう一方は¤xxxx.xxです。私が理解する限り、この文字は普遍的な通貨記号であり、JDKは特定のロケールが利用できないときにこれを使用します。私の理解は正しいのですか?はいの場合、アプリサーバーのいずれかで動作していますが、他のアプリケーションサーバーで動作していないのはなぜですか?アプリケーションサーバー/ JVMのプロパティでデフォルトのロケールまたはそのようなプロパティは表示されません。JavaのデフォルトNumberFormat通貨記号

double amount = xxxx.xx; 
String formattedAmt = NumberFormat.getCurrencyInstance().format(amount); 

PS:私はこのアプリケーションをJDK 1.6を使用しているWebSphereアプリケーションサーバークラスタにデプロイしています。 Javaのドキュメントに基づいて

答えて

1

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.

それは、サーバの現在のロケールにベースます。そういうわけで、あなたは2つの異なる行動を取るかもしれません。

public static NumberFormat getCurrencyInstance(Locale inLocale) Returns a currency format for the specified locale

:ローカルを指定したい場合は

、次のメソッドを使用する必要があります

関連する問題