답변:
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)
new DecimalFormat("0.##", DecimalFormatSymbols.getInstance(locale))
나만의 포맷 유틸리티를 만들었습니다. 많은 기능을 제공하면서 서식을 처리하는 데 매우 빠릅니다. :)
다음을 지원합니다.
코드는 여기 에서 찾을 수 있습니다 . 당신은 이것을 다음과 같이 부릅니다.
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 유형의 클래스로 병합 할 수도 있습니다.
K
이나 M
수단
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);
}
첫 번째 대답은 잘 작동하지만 ZERO / 0의 경우 형식은 .00입니다.
따라서 #, ## 0.00 형식이 잘 작동합니다. 프로덕션 시스템에 배포하기 전에 항상 0 / 100 / 2334.30과 같은 다른 숫자와 음수를 테스트하십시오.