source

정수를 수천 개의 쉼표로 문자열로 변환

factcode 2022. 9. 15. 22:46
반응형

정수를 수천 개의 쉼표로 문자열로 변환

Integer 35634646을 1,000 "으로 변환하고 싶기 때문에 35,634,646이 될 것입니다.

어떻게 하면 가장 빨리 할 수 있을까요?

System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646

가장 빠른 것을 요구하고 있습니다만, 「최상의」, 「올바른」, 또는 「표준적인」의 어느 쪽인가.

또한 쉼표를 사용하여 수천 개를 나타내도록 요구하지만, "사용자의 현지 관습에 따라 사람이 읽을 수 있는 일반적인 형식"을 의미할 수도 있습니다.

다음과 같이 합니다.

    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

2배:

double value = 21403.3144d;
String.format("%,.2f", value); // outputs 21,403.31

String.format은 매우 강력합니다.

- psuzi 피드백에 따라 편집.

 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

확장 사용

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

이 솔루션은 나에게 효과가 있었다.

NumberFormat.getNumberInstance(Locale.US).format(Integer.valueOf("String Your Number"));

를 사용합니다.%d형식 지정자를 쉼표로 지정합니다.%,d

이것이 단연코 가장 쉬운 방법이다.

여기에서는, 「number format」나 「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

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>

다음과 같이 기본 구분 기호를 원하는 문자로 바꿀 수도 있습니다.

val myNumber = NumberFormat.getNumberInstance(Locale.US)
   .format(123456789)
   .replace(",", "،")

a를 사용할 수 없습니까?

System.out.printf("%n%,d",int name);

의 콤마printf에 콤마를 추가합니다.%d인터럽트 합니다.

긍정적이진 않지만 나한테는 효과가 있어.

먼저 JSTL 태그를 포함해야 합니다.-

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 

페이지 첫머리에

언급URL : https://stackoverflow.com/questions/7070209/converting-integer-to-string-with-comma-for-thousands

반응형