답변:
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
,되지만 .대신 그룹화에 사용 하는 지역도 있습니다 . 한마디로, 로캘을 하드 코딩하는 것은 나쁜 습관으로 간주됩니다.
Locale.getCurrent()는 것이 해결책입니다
가장 빨리 요구하지만 "최고"또는 "정확한"또는 "일반"을 의미합니까?
또한 수천을 나타내도록 쉼표를 요구하지만 "사용자의 지역 관습에 따라 사람이 읽을 수있는 정상적인 형태"를 의미합니까?
당신은 그렇게합니다 :
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
미국인은 "35,634,646"을 얻을 것이다
독일인은 "35.634.646"을 얻을 것이다
스위스 독일인은 "35'634'646"을 얻을 것이다
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
정수 :
int value = 100000;
String.format("%,d", value); // outputs 100,000
더블스:
double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31
String.format. 그것은 시작 return new Formatter(l) ...가비지 컬렉터 인수가 보인다에서 강한되지 않도록 등.
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
산출: 35,634,646
#,###유럽식 형식을 원한다면 패턴을 넘지 않아도 됩니다 #,##,###.
,.
다른 답변은 정확하지만 다음을 사용하기 전에 로캘을 다시 확인하십시오 "%,d".
Locale.setDefault(Locale.US);
int bigNumber = 35634646;
String formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
Locale.setDefault(new Locale("pl", "PL"));
formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);
결과:
35,634,646
35 634 646
JSP에서 동일한 작업을 수행해야하는 경우 다음을 사용하십시오.
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
여러 값을 사용하는 과정은 다음과 같습니다.
<c:forEach items="${yourlist}" var="yourlist">
<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>
</c:forEach>
다음은 "numberformat"이나 "String.format"에 액세스 할 수없는 사용자를위한 솔루션입니다 (프레임 워크 내에서 제한된 Java 버전 사용). 유용하기를 바랍니다.
number= 123456789;
thousandsSeparator=",";
myNumberString=number.toString();
numberLength=myNumberString.length;
howManySeparators=Math.floor((numberLength-1)/3)
formattedString=myNumberString.substring(0,numberLength-(howManySeparators*3))
while (howManySeparators>0) {
formattedString=formattedString+thousandsSeparator+myNumberString.substring(numberLength-(howManySeparators*3),numberLength-((howManySeparators-1)*3));
howManySeparators=howManySeparators-1; }
formattedString
확장 사용
import java.text.NumberFormat
val Int.commaString: String
get() = NumberFormat.getInstance().format(this)
val String.commaString: String
get() = NumberFormat.getNumberInstance().format(this.toDouble())
val Long.commaString: String
get() = NumberFormat.getInstance().format(this)
val Double.commaString: String
get() = NumberFormat.getInstance().format(this)
결과
1234.commaString => 1,234
"1234.456".commaString => 1,234.456
1234567890123456789.commaString => 1,234,567,890,123,456,789
1234.456.commaString => 1,234.456
당신은 사용할 수 없습니다
System.out.printf("%n%,d",int name);
의 쉼표 printf는 %d인터에 쉼표를 추가해야합니다 .
그것에 대해 긍정적이지는 않지만 나를 위해 일합니다.
import java.text.NumberFormat;.