2017-12-14 8 views
0

Linux 환경에서 10 진수를 파싱하는 데 문제가 있습니다. Windows에서 구문 분석 할 때 모든 것이 괜찮습니다. 다음은Java DecimalFormat - Linux에서 숫자 형식이 잘못되었습니다.

, 코드

String price; DecimalFormat FORMATTER = (DecimalFormat)DecimalFormat.getInstance(); double customPrice = FORMATTER.parse(price).doubleValue();

결과

가격 =의 '9'다음 customPrice는 = '9.0'때 - 그것은 괜찮

때 가격 = '1,00 '그러면 customPrice ='100.0 '- 잘못되었습니다

price = '25, 00'then customPrice = '2500.0'- 잘못되었습니다

문제가 무엇인지 말해 줄 수 있습니까? 감사합니다

답변

1

여기서 로캘에 대해 here을 읽으십시오. 아마도 ','기호로 인해 수천 개의 그룹으로 분리되는 en_US가 사용되었을 것입니다.

당신은 당신이에 DecimalFormat의 소수 구분을 변경할 수 있습니다 자신의 sepeartors

1

을 명시하는 것이

DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(currentLocale); 
unusualSymbols.setDecimalSeparator(','); 
DecimalFormat weirdFormatter = new DecimalFormat(strange, unusualSymbols); 
weirdFormatter.setGroupingSize(4); 

를 사용할 수 있습니다. 예컨대, 원하는 로케일와의 NumberFormat을 사용하여 가장 쉬운 방법은 :

NumberFormat FORMATTER = NumberFormat.getNumberInstance(Locale.GERMAN); 
double customPrice = FORMATTER.parse(price).doubleValue(); 
+0

이 솔루션은 내 문제를 해결, 감사합니다! – damians