[java] 쉼표와 반올림을 갖도록 문자열 번호를 어떻게 형식화 할 수 있습니까?

나에게 문자열로 주어진 다음 숫자를 형식화하는 가장 좋은 방법은 무엇입니까?

String number = "1000500000.574" //assume my value will always be a String

이 값을 가진 문자열이되기를 원합니다. 1,000,500,000.57

형식을 어떻게 지정합니까?



답변

DecimalFormat수업 을보고 싶을 수도 있습니다 . 다른 로케일을 지원합니다 (예 : 1.000.500.000,57대신 형식이 지정된 일부 국가 ).

해당 문자열을 숫자로 변환해야합니다.이 작업은 다음과 같이 수행 할 수 있습니다.

double amount = Double.parseDouble(number);

코드 샘플 :

String number = "1000500000.574";
double amount = Double.parseDouble(number);
DecimalFormat formatter = new DecimalFormat("#,###.00");

System.out.println(formatter.format(amount));


답변

String.format ()을 사용하여 수행 할 수도 있습니다. String.format ()을 사용하면 한 문자열에서 여러 숫자를 형식화하는 경우 더 쉽고 유연 할 수 있습니다.

    String number = "1000500000.574";
    Double numParsed = Double.parseDouble(number);

    System.out.println(String.format("The input number is: %,.2f", numParsed));
    // Or
    String numString = String.format("%,.2f", numParsed);

형식 문자열 “% ,. 2f”- “,”는 쉼표로 구분 된 숫자 그룹을 의미하고 “.2″는 소수점 이하 두 자리로 반올림합니다.

다른 형식화 ​​옵션에 대한 참조는 https://docs.oracle.com/javase/tutorial/java/data/numberformat.html을 참조 하십시오.


답변

문자열을 숫자로 변환하면 사용할 수 있습니다

// format the number for the default locale
NumberFormat.getInstance().format(num)

또는

// format the number for a particular locale
NumberFormat.getInstance(locale).format(num)


답변

이것이 Google의 검색 결과 중 1 위이므로 format number commas java정수로 작업하고 소수를 신경 쓰지 않는 사람들에게 적합한 답변입니다.

String.format("%,d", 2000000)

출력 :

2,000,000


답변

나만의 포맷 유틸리티를 만들었습니다. 많은 기능을 제공하면서 서식을 처리하는 데 매우 빠릅니다. 🙂

다음을 지원합니다.

  • 쉼표 형식화 예 : 1234567은 1,234,567이됩니다.
  • “천 (K), 백만 (M), 십억 (B), 조각 (T)”접두사.
  • 0에서 15까지의 정밀도
  • 정밀도 크기 조정 (6 자리 정밀도를 원하지만 3 자리 만 사용할 수 있음을 의미).
  • 접두사 낮추기 (선택한 접두사가 너무 큰 경우 접두사가 더 적합한 접두사로 낮아짐을 의미합니다).

코드는 여기 에서 찾을 수 있습니다 . 당신은 이것을 다음과 같이 부릅니다.

public static void main(String[])
{
   int settings = ValueFormat.COMMAS | ValueFormat.PRECISION(2) | ValueFormat.MILLIONS;
   String formatted = ValueFormat.format(1234567, settings);
}

또한 이것은 십진수 지원을 처리하지 않지만 정수 값에 매우 유용하다는 것을 지적해야합니다. 위의 예는 “1.23M”을 출력으로 표시합니다. 아마도 10 진수 지원을 추가 할 수는 있었지만 그 이후로 너무 많이 사용하지는 않았지만 수학 계산을 위해 압축 된 char [] 배열을 처리하는 BigInteger 유형의 클래스로 병합 할 수도 있습니다.


답변

public void convert(int s)
{
    System.out.println(NumberFormat.getNumberInstance(Locale.US).format(s));
}

public static void main(String args[])
{
    LocalEx n=new LocalEx();
    n.convert(10000);
}


답변

아래 솔루션을 사용할 수도 있습니다-

public static String getRoundOffValue(double value){

        DecimalFormat df = new DecimalFormat("##,##,##,##,##,##,##0.00");
        return df.format(value);
}