2016-08-16 3 views
0

NumberFormat의 format() 메서드를 사용하여 응용 프로그램에서 통화 서식을 지정하고 있습니다. 통화 인스턴스를 가져올 때 메서드에 로캘을 전달하지 않습니다. 두 개의 노드/서버가 포함 된 응용 프로그램 클러스터에이 코드를 배포했습니다. 흥미롭게도 app 서버 중 하나에서 formattedAmmt는 $ xxxx.xx이지만 다른 하나는 ¤xxxx.xx입니다. 필자가 이해하는 한,이 문자는 보편적 인 통화 기호이며 JDK는 특정 로케일이없는 경우이 문자를 사용합니다. 내 이해가 맞습니까? 그렇다면 응용 서버 중 하나에서 작동하지만 다른 응용 서버에서는 작동하지 않는 이유는 무엇입니까? 앱 서버/JVM 속성에서 기본 로케일이나 속성을 볼 수 없습니다.Java 기본 NumberFormat 통화 기호

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

추신 : 나는이 응용 프로그램을 JDK 1.6을 사용하는 WebSphere 응용 프로그램 서버 클러스터에 배포하고 있습니다. 자바 문서를 기반으로

답변

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.

그것은 서버의 현재 로케일에 기반합니다. 그래서 두 가지 다른 행동을 할 수 있습니다.

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

: 로컬을 지정하려면

, 다음과 같은 방법을 사용해야합니다