사용 된 메인 클래스 : java.text.decimalformat
1. 개체를 인스턴스화하려면 다음 두 가지 방법을 사용할 수 있습니다.
코드 사본은 다음과 같습니다.
DecimalFormat df = (DecimalFormat) numberformat.getInstance ();
Decimalformat df1 = (DecimalFormat) DecimalFormat.getInstance ();
DecimalFormat은 NumberFormat에서 상속되기 때문입니다.
2. 소수점 자리 수를 설정하십시오
소수점 이하의 기본값은 다음과 같은 3입니다.
코드 사본은 다음과 같습니다.
DecimalFormat df = (DecimalFormat) numberformat.getInstance ();
System.out.println (df. format (12.3456789));
출력 : 12.346
이제 다음 방법으로 소수점에서 두 자릿수를 설정할 수 있습니다.
코드 사본은 다음과 같습니다.
df.setmaxumpractionDigits (2);
System.out.println (df. format (12.3456789));
그런 다음 출력은 다음과 같습니다. 12.35
3. 숫자를 백분율 출력으로 변환하는 두 가지 방법이 있습니다.
(1)
코드 사본은 다음과 같습니다.
df.applypattern ( "##. ##%");
System.out.println (df. format (12.3456789));
System.out.println (df. format (1));
System.out.println (df. format (0.015));
출력은 다음과 같습니다. 1234.57% 100% 1.5%
(2)
코드 사본은 다음과 같습니다.
df.setmaxumpractionDigits (2);
System.out.println (df. format (12.3456789*100)+"%");
System.out.println (df. format (1*100)+"%");
System.out.println (df.format (0.015*100)+"%");
출력은 다음과 같습니다.
1,234.57% 100% 1.5%
4. 그룹 크기를 설정하십시오
코드 사본은 다음과 같습니다.
Decimalformat df1 = (DecimalFormat) DecimalFormat.getInstance ();
df1.setgroupingsize (2);
System.out.println (df1.format (123456789));
출력 : 1,23,45,67,89
DF1에 의해 그룹화 설정을 비활성화 할 수 있습니다.
코드 사본은 다음과 같습니다.
Decimalformat df1 = (DecimalFormat) DecimalFormat.getInstance ();
df1.setgroupingsize (2);
df1.setGroupInd (false);
System.out.println (df1.format (123456789));
출력 : 123456789
5. 소수점에서 2 자리를 설정하십시오
코드 사본은 다음과 같습니다.
Decimalformat df2 = (DecimalFormat) DecimalFormat.getInstance ();
df2.applypattern ( "0.00");
System.out.println (df2.format (1.2));
출력 : 1.20
때로는 출력 번호의 형식을 제어해야합니다.
어쩌면 당신은 형식에 신경 쓰지 않지만, 당신은 당신의 프로그램이 전 세계에서 보편적 인 것에 대해 관심을 가질 필요가 있습니다.
System.out.println (1234.56);
미국에서는 "."는 소수점이지만 반드시 다른 곳은 아닙니다. 이것을 다루는 방법?
java.text 패키지의 일부 패키지는 이러한 유형의 문제를 처리 할 수 있습니다. 다음 간단한 예제는 해당 클래스를 사용하여 위에서 제기 한 문제를 해결합니다.
코드 사본은 다음과 같습니다.
import java.text.numberformat;
java.util.locale import;
공개 클래스 DecimalFormat1 {
public static void main (String args []) {
// 로컬 기본 형식을 가져옵니다
numberformat nf1 = numberformat.getInstance ();
System.out.println (nf1.format (1234.56));
// 독일어 형식을 얻습니다
Numberformat nf2 =
숫자 format.getInstance (locale.german);
System.out.println (nf2.format (1234.56));
}}
미국에있는 경우 프로그램을 운영 한 후 출력 :
1,234.56
1.234,56
다시 말해, 다른 습관을 사용하여 다른 장소의 숫자를 나타냅니다.
numberformat.getInstance () 메소드는 로컬 설정을 기반으로 숫자를 형식화하는 데 적합한 NumberFormat (실제로 DecimalFormat과 같은 NumberFormat의 특정 서브 클래스)의 인스턴스를 반환합니다. 독일과 같은 비 기본 지역 환경을 사용할 수도 있습니다. 형식 방법은 특정 지역 규칙에 따라 숫자를 형식화합니다. 이 프로그램은 간단한 형태로 사용될 수 있습니다.
numberformat.getInstance (). 형식 (1234.56)
그러나 형식을 저장 한 다음 재사용하는 것이 더 효율적입니다. 국제화는 숫자를 형식화 할 때 큰 문제입니다.
다른 하나는 분수 부품의 숫자 수를 지정하는 것과 같은 형식에 대한 효과적인 제어입니다.
코드 사본은 다음과 같습니다.
import java.text.decimalformat;
java.util.locale import;
공개 클래스 Decimalformat2 {
public static void main (String args []) {
// 로컬 기본 형식을 가져옵니다
Decimalformat df1 = 새로운 Decimalformat ( "###. 000");
System.out.println (df1.format (1234.56));
// 독일어 형식을 얻습니다
locale.setdefault (locale.german);
Decimalformat df2 = 새로운 십진형 ( "###. 000");
System.out.println (df2.format (1234.56));
}
}
이 예에서 "####. 000"과 같은 기호를 사용하여 숫자 형식이 설정됩니다. 이 모드는 소수점 앞에 4 개의 숫자가 충분하지 않으면 10 진수 후에 3 개의 숫자가 있으면 0으로 채워집니다. 프로그램 출력 :
1234.560
1234,560
마찬가지로 지수 형식의 형식도 제어 할 수 있습니다.
코드 사본은 다음과 같습니다.
import java.text.decimalformat;
공개 클래스 Decimalformat3 {
public static void main (String args []) {
Decimalformat df = 새로운 십진포 ( "0.000e0000");
System.out.println (df. format (1234.56));
}
}
산출:
1.235E0003
백분율 :
코드 사본은 다음과 같습니다.
import java.text.numberformat;
공개 클래스 Decimalformat4 {
public static void main (String args []) {
numberformat nf = numberformat.getPerCentInstance ();
System.out.println (nf.format (0.47));
}
}
산출:
47%
지금까지 숫자를 형식화하기위한 여러 가지 기술을 보았습니다. 반면에 형식 숫자가 포함 된 문자열을 어떻게 읽고 구문 분석합니까? 해상도 지원은 NumberFormat에 포함되어 있습니다. 예를 들어:
코드 사본은 다음과 같습니다.
java.util.locale import;
import java.text.numberformat;
import java.text.parseexception;
공개 클래스 Decimalformat5 {
public static void main (String args []) {
// 로컬 형식
numberformat nf1 = numberformat.getInstance ();
Object obj1 = null;
// 형식 기반 구문 분석
노력하다 {
obj1 = nf1.parse ( "1234,56");
}
캐치 (parseexception e1) {
System.err.println (E1);
}
System.out.println (OBJ1);
// 독일 형식
Numberformat nf2 =
숫자 format.getInstance (locale.german);
Object obj2 = null;
// 형식 기반 구문 분석
노력하다 {
obj2 = nf2.parse ( "1234,56");
}
캐치 (parseexception e2) {
System.err.println (e2);
}
System.out.println (OBJ2);
}
}
이 예제는 두 부분으로 나뉩니다. 둘 다 문자열을 구문 분석합니다 : "1234,56". 첫 번째 부분은 로컬 형식을 사용하여 구문 분석하고 두 번째 부분은 독일 형식을 사용하여 구문 분석합니다. 프로그램이 미국에서 실행되면 결과는 다음과 같습니다.
123456
1234.56
다시 말해, "1234,56"은 미국에서 123456의 거대한 정수로 간주되고 독일에서는 "1234.56"의 소수점으로 간주됩니다.
포맷 토론의 마지막 질문도 있습니다. 위의 예에서는 십진법과 숫자가 모두 사용됩니다. Decimalformat은 종종 양호한 형식 제어를 얻는 데 사용되며 Numberformat은 종종 로컬과 다른 영역을 지정하는 데 사용됩니다. 두 가지 범주를 결합하는 방법은 무엇입니까?
대답은 DecimalFormat가 NumberFormat의 서브 클래스라는 사실을 중심으로하며 인스턴스는 특정 영역으로 지정됩니다. 따라서 NumberFormat.getInstance를 사용하여 영역을 지정한 다음 구조물을 십자형 객체에 시전 할 수 있습니다. 문서는이 기술이 대부분의 경우에 적용될 수 있다고 언급하지만, 전환이 제대로 작동하지 않는 경우 (아마도 매우 눈에 띄지 않는 상황에서 이상한 영역을 사용하는) Cast를 둘러싸기 위해 시도/캐치 블록을 사용해야합니다. 다음은 다음과 같은 예입니다.
코드 사본은 다음과 같습니다.
import java.text.decimalformat;
import java.text.numberformat;
java.util.locale import;
공개 클래스 DecimalFormat6 {
public static void main (String args []) {
Decimalformat df = null;
// Numberformat 객체를 가져옵니다
// 십진법 객체로 캐스트합니다
노력하다 {
df = (Decimalformat)
숫자 format.getInstance (locale.german);
}
catch (classcastException e) {
System.err.println (e);
}
// 형식 모드를 설정합니다
df.applypattern ( "####. 00000");
// 숫자를 형식화합니다
System.out.println (df. format (1234.56));
}
}
getInstance () 메소드는 형식을 얻은 다음 applicpattern () 메소드를 호출하여 형식 모드를 설정하고 출력을 설정합니다.
1234,56000
국제화에 신경 쓰지 않으면 Decimalformat을 직접 사용할 수 있습니다.