[java] Java에서 소수점 구분 기호로 사용되는 강제 점 (“.”)

현재 다음 코드를 사용하여 이중을 인쇄합니다.

return String.format("%.2f", someDouble);

이것은 Java가 내 로케일의 소수점 구분 기호 (쉼표)를 사용하고 점을 사용하고 싶은 점을 제외하면 잘 작동합니다. 이 작업을 수행하는 쉬운 방법이 있습니까?



답변

String.format로케일을 지정할 수 있는 오버로드를 사용하십시오 .

return String.format(Locale.ROOT, "%.2f", someDouble);

여기에있는 것처럼 숫자 형식 지정하는 경우 사용하는 NumberFormat것이 더 적절할 것입니다. 그러나의 나머지 서식 기능 String.format이 필요한 경우 제대로 작동합니다.


답변

보다 과감한 해결책은 main () 초기에 로케일을 설정하는 것입니다.

처럼:

Locale.setDefault(new Locale("en", "US"));


답변

추가 로케일을 java.lang.String.format 및 java.io.PrintStream.printf (예 : System.out.printf ())에 전달할 수 있습니다.

import java.util.Locale;

public class PrintfLocales {

    public static void main(String args[]) {
        System.out.printf("%.2f: Default locale\n", 3.1415926535);
        System.out.printf(Locale.GERMANY, "%.2f: Germany locale\n", 3.1415926535);
        System.out.printf(Locale.US, "%.2f: US locale\n", 3.1415926535);
    }

}

결과는 다음과 같습니다 (내 PC에서).

$ java PrintfLocales
3.14: Default locale
3,14: Germany locale
3.14: US locale

Java API의 String.format 을 참조하십시오 .


답변

너무 늦었지만 여기에 언급 된 다른 것은 NumberFormat(및 하위 클래스 DecimalFormat) 의 샘플 사용입니다.

public static String format(double num) {
    DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
    decimalSymbols.setDecimalSeparator('.');
    return new DecimalFormat("0.00", decimalSymbols).format(num);
 }


답변

NumberFormat 및 DecimalFormat을 사용할 수 있습니다.

Java Tutorials LocaleSpecific Formatting 에서이 링크를 살펴보십시오.

Locale-Sensitive Formatting이라는 섹션이 필요합니다.


답변

난 .. 같은 문제를 가지고 55.1로 변환 55,10. 내 빠른 (더러운?) 수정은 다음과 같습니다.

String.format("%.2f", value).replaceAll(",",".");


답변