답변:
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;
.