답변:
이것은 작동해야합니다 (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에 따르면 첫 번째 행의 캐스트는 대부분의 로케일에 저장되어야합니다.
getDecimalFormatSymbols()
says : Returns: a copy of the desired DecimalFormatSymbols
. 따라서 setDecimalFormatSymbols(theCopy)
사본을 변경 한 후에 사용해야합니다 .
new
: 및 포맷으로 다시 설정 DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
","와 함께 format 함수를 사용할 수 있습니다.
int no = 124750;
String str = String.format("%,d", no);
//str = 124,750
","에는 로캘 별 그룹화 문자가 포함됩니다.
.
구분 기호 로 사용하려면 어떻게해야합니까?
format()
명시 적 로케일 ( Local.US
사용 알려진 ,
구분 기호) 한 후 교체 ,
사용자 정의 구분 기호 : String.format(Locale.US, "%,d", n).replace(',', '.')
.
int
. 또는 long
. 또는 BigInteger
. 그리고 사용 f를 당신이 사용하려는 경우 double
, float
또는 BigDecimal
.
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()));
NumberFormat
원하는 속성 으로 객체를 만들고이를 사용하여 형식을 지정합니다 BigDecimal
. A는 BigDecimal
단지 지정된 값을 가지고, 그것은 하지 않습니다 지정된 형식을 가지고있다.
브라질에서 사용되는 형식으로이 코드를 사용해보십시오.
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"
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
이 매개 변수를 보고서로 보내십시오.
정수 데이터 유형에 천 단위 구분 기호를 사용하는 경우 1을 사용하십시오.
String.format ( "%, d \ n", 58625) 및 출력은 58,625입니다.
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()));
새로운 행은 다음과 같습니다. formatter.setDecimalFormatSymbols (symbols);
의 경우 소수 :
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