java.text.decimalFormat 용법 상세 설명

6425 단어 자바.DecimalFormat
간명 하 다
DecimalFormat 의 pattern 은 모두 양음 자 pattern 을 포함 하고 있 습 니 다.예 를 들 어"\#,\#\#0.00;(\#,\#\##0.00)”:

/**
 * Created by Shuai on 2016/7/11.
 */
public class Main {
  public static void main(String[] args) {

    //   
    BigDecimal bigDecimal = BigDecimal.valueOf(-12211151515151.541666);

    //   
    BigDecimal bigDecimal2 = BigDecimal.valueOf(12211151515151.541666);
    String pattern = "#,##0.00;(#,##0.00)";
    DecimalFormat decimalFormat = new DecimalFormat(pattern);
    decimalFormat.format(bigDecimal);
    System.out.println(decimalFormat.format(bigDecimal));
    System.out.print(decimalFormat.format(bigDecimal2));
  }
}

출력:

(12,211,151,515,151.54)
12,211,151,515,151.54
모든 하위 pattern 은 접두사,수치 부분 과 접두사 로 구성 되 어 있 습 니 다.위의 양음 pattern 은 접두사 와 접두사 만 다 를 수 있 습 니 다.수치 부분 은 기본적으로 pattern 을 바 꿉 니 다.이것 은'\#,\#0.0\#;(\#)'를 의미 합 니 다.'\#,\#0.0\#;(\#,\#0.0#)" 。;뒤의 마이너스 pattern 은 선택 할 수 있 습 니 다.없 으 면 마이너스 값 은 기본 형식 으로 표 시 됩 니 다(대부분의 지역 에서 접 두 사 는'-').예 를 들 어-12,211,151,515,151.54.재 미 있 는 것 은 0 값 에 대해 서 는 pattern 을 바로 잡 습 니 다.

public class Main {
  public static void main(String[] args) {

    BigDecimal bigDecimal = BigDecimal.valueOf(-0.00);
    BigDecimal bigDecimal2 = BigDecimal.valueOf(0.00);
    String pattern = "0.00;(0.00)";
    DecimalFormat decimalFormat = new DecimalFormat(pattern);
    decimalFormat.format(bigDecimal);
    System.out.println(decimalFormat.format(bigDecimal));
    System.out.print(decimalFormat.format(bigDecimal2));
  }
}

출력:

0.00
0.00
DecimalFormat 은 문자열 을 직접 해석 할 수 있 습 니 다.

System.out.print(decimalFormat.parse(",,,1,515,115.26262", new ParsePosition(0)));
출력:

1515115.26262
이 를 통 해 알 수 있 듯 이 decimalFormat.parse 방법 은 모두 자동 으로 제거 되 었 습 니 다.이전 에는 해 석 된 문자열 의 첫 번 째 문 자 는 숫자 여야 하거나,나중에 숫자 를 따라 가 야 합 니 다.그렇지 않 으 면 이상 을 던 지 거나 null 로 해 석 됩 니 다.parse 의 두 번 째 매개 변 수 는 분 석 된 첫 번 째 문자 의 위 치 를 지정 합 니 다.위의 예 위 치 는 0,1,2,3 은 모두 1 부터 해석 하고 4,5 는 모두 5 부터 해석 합 니 다.즉,취 할 경우 위 치 는 뒤에 붙 어 있 는 숫자 로 보충 합 니 다.만약.앞 에 숫자 를 제외 한 다른 문자 가 나타 나 면 parse 는 이 문자 의 앞 자리 로 해석 하거나,뒤에 숫자 를 제외 한 다른 문자(포함)가 나타 나 면 pares 는 이 문자 의 앞 자리 로 해석 합 니 다.
pattern 에 여러 그룹의 개수 가 다른 문 자 를 포함 하고 있다 면,예 를 들 어"\#,\#,\#\#,\#\#\#\#"는 그룹의 다음 그룹 을 사용 합 니 다.즉,"\#,\#,\#,\#,\#\#,\#\#\#"="\#\##\#,\##,\#\##\#\#"="\#,\#

public class Main {
  public static void main(String[] args) {

    BigDecimal bigDecimal = BigDecimal.valueOf(65652323265.626262);
    String pattern = "#,##,###,###0.00";
    String pattern2 = "######,###0.00";
    String pattern3 = "##,####,###0.00";
    DecimalFormat decimalFormat = new DecimalFormat(pattern);
    System.out.println(decimalFormat.format(bigDecimal));
    decimalFormat.applyPattern(pattern2);
    System.out.println(decimalFormat.format(bigDecimal));
    decimalFormat.applyPattern(pattern3);
    System.out.println(decimalFormat.format(bigDecimal));
  }
}

출력:

656,5232,3265.63
656,5232,3265.63
656,5232,3265.63
Special Pattern Characters

과학적 계산 법
1234 는 1.234 x 10^3 이 고 pattern 은 0.\#\#\#E0 이 며 1234 를 1.234E 3 로 포맷 합 니 다.
정수 개수:
  • 정수 위의 최대 개수 가 최소 개수 보다 크 고 1 보다 크 면 강제 지 수 는 정수 위의 최대 개수 의 배수 이 고 정수 위의 최소 개 수 는 1 로 간주한다.예 를 들 어'\#\#0.\#\#\#\#E0'은 정수 가 최대 개수 가 3 이 고 최소 개수 가 1 이면 지 수 는 3 의 배수 이 어야 하 며 최소 1 개의 정수 가 있어 야 한다.12345 는'12.345E 3',123456 은'123.456 E 3',123 은'123E 0'으로 포맷 했다.
  • 그렇지 않 으 면 정수 의 최소 개수 로 지 수 를 조정 합 니 다."00.\#\#E0"은 0.00123 을"12.3E-4"로 포맷 합 니 다.
  • 유효 숫자 개 수 는 정수 비트 의 최소 개수 와 소수 비트 의 최대 개수 의 합 에 의 해 얻어 진다.예 를 들 어'\#\#0.\#\#E0'정수 비트 의 최소 개 수 는 1 이 고 소수 비트 의 최대 개 수 는 2 이 며 유효 개 수 는 3 이 며 12345 를'12.3E3'으로 포맷 한다.유효 개 수 를 제외 하고 기타 생략.
    수치 반올림 규칙
    방법 decimalFormat.setRoundingMode 를 통 해 RoundingMode 을 설정 할 수 있 습 니 다.기본 값 은 RoundingMode.HALF_EVEN. 입 니 다.
    동기 화 되 지 않 습 니 다.다 중 스 레 드 에 접근 하면 동기 화 를 스스로 실현 해 야 합 니 다.
    모든 스 레 드 에 단독 형식 인 스 턴 스 를 만 드 는 것 을 권장 합 니 다.여러 스 레 드 가 동시에 형식 에 접근 하려 면 외부 에서 동기 화 되 어야 합 니 다.
    Example
    
    // Print out a number using the localized number, integer, currency,
     // and percent format for each locale
     Locale[] locales = NumberFormat.getAvailableLocales();
     double myNumber = -1234.56;
     NumberFormat form;
     for (int j=0; j<4; ++j) {
       System.out.println("FORMAT");
       for (int i = 0; i < locales.length; ++i) {
         if (locales[i].getCountry().length() == 0) {
          continue; // Skip language-only locales
         }
         System.out.print(locales[i].getDisplayName());
         switch (j) {
         case 0:
           form = NumberFormat.getInstance(locales[i]); break;
         case 1:
           form = NumberFormat.getIntegerInstance(locales[i]); break;
         case 2:
           form = NumberFormat.getCurrencyInstance(locales[i]); break;
         default:
           form = NumberFormat.getPercentInstance(locales[i]); break;
         }
         if (form instanceof DecimalFormat) {
           System.out.print(": " + ((DecimalFormat) form).toPattern());
         }
         System.out.print(" -> " + form.format(myNumber));
         try {
           System.out.println(" -> " + form.parse(form.format(myNumber)));
         } catch (ParseException e) {}
       }
     }
    
    
    참고:주소
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기