numberformat.getInstance () 메소드는 로컬 설정을 기반으로 숫자를 형식화하는 데 적합한 NumberFormat (실제로 DecimalFormat과 같은 NumberFormat의 특정 서브 클래스)의 인스턴스를 반환합니다. 독일과 같은 비 기본 지역 환경을 사용할 수도 있습니다. 형식 방법은 특정 지역 규칙에 따라 숫자를 형식화합니다. 이 프로그램은 간단한 형태로 사용될 수 있습니다.
numberformat.getInstance (). 형식 (1234.56)
그러나 형식을 저장 한 다음 재사용하는 것이 더 효율적입니다. 국제화는 숫자를 형식화 할 때 큰 문제입니다.
다른 하나는 분수 부분의 숫자 수를 지정하는 등 형식에 대한 효과적인 제어입니다. 이 문제를 해결하기위한 간단한 예는 다음과 같습니다.
import java.text.decimalformat; import java.util.locale; public class decimalformat2 {public static void main (String args []) {// 로컬 기본 형식 가져 오기 Decimalformat df1 = new Decimalformat ( "####. 000"); System.out.println (df1.format (1234.56)); // 독일어 형식 Locale.SetDefault (locale.german); Decimalformat df2 = 새로운 Decimalformat ( "####. 000"); System.out.println (df2.format (1234.56));}} 이 예에서 "####. 000"과 같은 기호를 사용하여 숫자 형식이 설정됩니다. 이 모드는 소수점 앞에 4 개의 숫자가 있음을 의미합니다. 충분하지 않으면 비어 있습니다. 소수점 이후 세 개의 숫자가있는 경우 0으로 채워집니다. 프로그램 출력 :
1234.560
1234,560
마찬가지로 지수 형식의 형식도 제어 할 수 있습니다.
import java.text.decimalformat; public class decimalformat3 {public static void main (String args []) {decimalformat df = new Decimalformat ( "0.000e0000"); System.out.println (df. format (1234.56));}} 산출:
1.235E0003
백분율 :
import java.text.numberformat; public class decimalformat4 {public static void main (String args []) {numberformat nf = numberformat.getPercentInstance (); system.out.println (0.47);}} 산출:
47%
지금까지 숫자를 형식화하기위한 여러 가지 기술을 보았습니다. 반면에 형식 숫자가 포함 된 문자열을 어떻게 읽고 구문 분석합니까? 해상도 지원은 NumberFormat에 포함되어 있습니다. 예를 들어:
import java.util.locale; import java.text.numberformat; import java.text.parseexception; public class decimalformat5 {public static void main (String args []) {// 로컬 형식 번호 format nf1 = numberformat.getInstance (); Object obj1 = null; // 형식 기반 구문 분석 try {obj1 = nf1.parse ( "1234,56"); } catch (parseException e1) {System.err.println (e1); } system.out.println (OBJ1); // 독일어 형식 번호 format nf2 = numberformat.getInstance (locale.german); Object obj2 = null; // 형식 기반 구문 분석 try {obj2 = nf2.parse ( "1234,56"); } catch (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; import java.util.locale; public class decimalformat6 {public static void main (String args []) {decimalformat df = null; // numberformat 객체를 가져 와서 // 십진법 객체로 캐스트하십시오 {df = (DecimalFormat) numberformat.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을 직접 사용할 수 있습니다.
여기서 V는 처리되지 않은 이중 인 경우, 스케일은 필요한 정밀도이며 소수점 숫자가 필요한 더블을 반환합니다.
public static double round (double v, int scale) {if (scale <0) {new new ImpalargumentException ( "스케일은 양의 정수 또는 0이어야한다"); } bigdecimal b = 새로운 bigdecimal (double.tostring (v)); bigdecimal one = new bigdecimal ( "1"); return b.divide (하나, scale, bigdecimal.round_half_up) .doublevalue (); } 위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.