쉼표와 반올림을 갖도록 문자열 번호를 어떻게 포맷 할 수 있습니까?
나에게 문자열로 주어진 다음 숫자를 형식화하는 가장 좋은 방법은 무엇입니까?
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)
나만의 포맷 유틸리티를 만들었습니다. 많은 기능을 제공하면서 서식을 처리하는 데 매우 빠릅니다. :)
다음을 지원합니다.
- 쉼표 형식화 (예 : 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 유형의 클래스로 병합 할 수도 있습니다.
이것이 Google의 검색 결과 중 1 위이므로 format number commas java
정수로 작업하고 소수에 신경 쓰지 않는 사람들에게 적합한 답변입니다.
String.format("%,d", 2000000)
출력 :
2,000,000
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);
}
다음 코드를 사용하여 한 줄로 전체 변환을 수행 할 수 있습니다.
String number = "1000500000.574";
String convertedString = new DecimalFormat("#,###.##").format(Double.parseDouble(number));
DecimalFormat 생성자의 마지막 두 # 기호도 0이 될 수 있습니다. 어느 쪽이든 작동합니다.
가장 간단한 방법은 다음과 같습니다.
String number = "10987655.876";
double result = Double.parseDouble(number);
System.out.println(String.format("%,.2f",result));
출력 : 10,987,655.88
The first answer works very well, but for ZERO / 0 it will format as .00
Hence the format #,##0.00 is working well for me. Always test different numbers such as 0 / 100 / 2334.30 and negative numbers before deploying to production system.
'Programming' 카테고리의 다른 글
Asp.net-드롭 다운 목록 맨 위에 빈 항목 추가 (0) | 2020.07.05 |
---|---|
VBA에서 전역 변수를 어떻게 선언합니까? (0) | 2020.07.05 |
사전에서 하나의 키에 여러 값을 추가합니다 (0) | 2020.07.05 |
.NET을 사용하여 두 파일을 빠르게 비교하는 방법은 무엇입니까? (0) | 2020.07.05 |
팬더 그룹 및 합계 (0) | 2020.07.05 |