programing

Java에서 수천 구분자를 설정하는 방법은 무엇입니까?

kingscode 2022. 7. 16. 16:50
반응형

Java에서 수천 구분자를 설정하는 방법은 무엇입니까?

Java에서 수천 구분자를 설정하는 방법은 무엇입니까?
큰 십진법

포맷 기능은 " ," 와 함께 사용할 수 있습니다.

int no = 124750;
String str = String.format("%,d", no);

//str = 124,750

" "에는 로케일 고유의 그룹화 문자가 포함되어 있습니다.

문서

이것은 동작합니다(JavaDoc에 근거해 테스트되지 않았습니다).

DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();

symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));

JavaDoc에 따르면 첫 번째 줄의 캐스팅은 대부분의 로케일에서 저장해야 합니다.

BigDecimal bd = new BigDecimal(300000);

NumberFormat formatter = NumberFormat.getInstance(new Locale("en_US"));

System.out.println(formatter.format(bd.longValue()));

편집

공간과 같은 사용자 지정 그룹 구분 기호를 가져오려면 다음을 수행합니다.

DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance();
symbols.setGroupingSeparator(' ');

DecimalFormat formatter = new DecimalFormat("###,###.##", symbols);
System.out.println(formatter.format(bd.longValue()));

브라질에서 사용되는 포맷으로 다음 코드를 사용해 보십시오.

    DecimalFormat df = new DecimalFormat(
      "#,##0.00", 
      new DecimalFormatSymbols(new Locale("pt", "BR")));

    BigDecimal value = new BigDecimal(123456.00);

    System.out.println(df.format(value.floatValue()));

    // results: "123.456,00"

정수 데이터 유형에 천 구분 기호를 사용하는 경우 1을 사용하십시오.

  1. 정수 데이터 유형의 경우

String.format("%d\n", 58625") 및 출력은 58,625가 됩니다.

  1. 부동 소수점 데이터의 경우 문자열을 입력합니다.포맷(%)%.2f", 58625.21) 및 출력은 58,625.21 입니다.
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('|');
formatSymbols.setGroupingSeparator(' ');

String strange = "#,##0.###";
DecimalFormat df = new DecimalFormat(strange, formatSymbols);
df.setGroupingSize(4);

String out = df.format(new BigDecimal(300000).doubleValue());

System.out.println(out);

승인된 답변은 정말로 수정되어야 합니다. 그렇지 않으면 작동하지 않습니다.getDecimalFormatSymbols는 방어 복사를 만듭니다.따라서,

DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();

symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));

새로운 행은 포메터입니다.setDecimalFormatSymbols(심볼);

NumberFormat nf = DecimalFormat.getInstance(myLocale);
DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(',');
customSymbol.setGroupingSeparator(' ');
((DecimalFormat)nf).setDecimalFormatSymbols(customSymbol);
nf.setGroupingUsed(true);

소수점:

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
DecimalFormat dfDecimal = new DecimalFormat("###########0.00###");
dfDecimal.setDecimalFormatSymbols(symbols);
dfDecimal.setGroupingSize(3);
dfDecimal.setGroupingUsed(true);
System.out.println(dfDecimal.format(number));

위에서 설명한 바와 같이 다음 링크는 Java가 번호를 현지화할 수 있도록 특정 국가 코드를 제공합니다.나라마다 스타일이 있어요.

위 링크에는 여기에 삽입해야 할 국가 코드가 있습니다.

...(new Locale(<COUNTRY CODE HERE>));

예를 들어 스위스는 다음과 같은 숫자의 형식을 취합니다.

1000.00 --> 1,000.00

국가 코드

그러기 위해서는, 다음의 코드가 유효합니다.

NumberFormat nf = NumberFormat.getNumberInstance(new Locale("de","CH"));
nf.setMaximumFractionDigits(2);
DecimalFormat df = (DecimalFormat)nf;
System.out.println(df.format(1000.00));

결과는 예상대로입니다.

1'000.00
public String formatStr(float val) {
 return String.format(Locale.CANADA, "%,.2f", val);
}

formatStr(2524.2) // 2,254.20



사용(「」)_) 코드 자체의 리터럴 수치 판독성을 높이려면 , 다음의 순서에 따릅니다.

int example = 12_004_953; // Twelve million four thousand nine hundred fifty-three

언급URL : https://stackoverflow.com/questions/5323502/how-to-set-thousands-separator-in-java

반응형