2012-02-21 4 views

답변

6

당신이하는 NumberFormat 문서를 읽고,이 경우에 DecimalFormat에서입니다 : 참조 : http://docs.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html

Scientific Notation

Numbers in scientific notation are expressed as the product of a mantissa and a power of ten, for example, 1234 can be expressed as 1.234 x 10^3. The mantissa is often in the range 1.0 <= x < 10.0, but it need not be. DecimalFormat can be instructed to format and parse scientific notation only via a pattern; there is currently no factory method that creates a scientific notation format. In a pattern, the exponent character immediately followed by one or more digit characters indicates scientific notation. Example: "0.###E0" formats the number 1234 as "1.234E3".

  • The number of digit characters after the exponent character gives the minimum exponent digit count. There is no maximum. Negative exponents are formatted using the localized minus sign, not the prefix and suffix from the pattern. This allows patterns such as "0.###E0 m/s".

  • The minimum and maximum number of integer digits are interpreted together:

    • If the maximum number of integer digits is greater than their minimum number and greater than 1, it forces the exponent to be a multiple of the maximum number of integer digits, and the minimum number of integer digits to be interpreted as 1. The most common use of this is to generate engineering notation, in which the exponent is a multiple of three, e.g., "##0.#####E0". Using this pattern, the number 12345 formats to "12.345E3", and 123456 formats to "123.456E3".

    • Otherwise, the minimum number of integer digits is achieved by adjusting the exponent. Example: 0.0formatted with "00.###E0" yields "12.3E-4".

  • The number of significant digits in the mantissa is the sum of the minimum integer and maximum fraction digits, and is unaffected by the maximum integer digits. For example, 12345 formatted with "##0.##E0" is "12.3E3". To show all digits, set the significant digits count to zero. The number of significant digits does not affect parsing.

  • Exponential patterns may not contain grouping separators.

+0

나는 이것을 시도했다 :'BigDecimal d = new BigDecimal ("55"); DecimalFormat df = 새로운 DecimalFormat ("0. ### E0"); System.out.println (df.format (d.toString()));',하지만 나에게 오류가 발생했습니다 : "주어진 객체를 숫자로 포맷 할 수 없습니다" –

+0

이제 작동하고, 그냥 d.toString() 'd와 함께. 감사 :) –

0

이와 비슷한 제품을 찾고 계십니까?

YY^XX (모드 QQ)

int fastMod(int YY, int XX, int QQ){ 
    int ZZ;            //declare variables 
    int RR = 1; 

    while (XX != 0){         //while XX != 0 
     ZZ = XX % 2;         //mod XX by 2 
     XX= XX/2;          //divide XX by 2 
     if (ZZ == 1)         //if ZZ is one 
     RR = (RR * YY) % QQ;       //mod (RR*YY) by QQ 
     YY= (YY * YY) % QQ;        //mod (YY*YY) by QQ  
    } 
    return RR;           //return int 
} 

당신이 거대한 숫자를 사용하여 시작하면 당신은 모듈러 산술을 사용해야합니다. 이것은 RSA 알고리즘과 같이 큰 소수를 생성 할 때 특히 유용합니다. 모듈러 산술의 기본은 여기서 다루지 : http://www.brainjammer.com/math/modular-arithmetic/

+0

나는 그것을 얻지 못한다. BigDecimal을 지수 형식으로 변환하는 데 어떻게 도움이 될까요? –

+0

요점은 모듈러 산술을 사용하지 않으면 큰 숫자로 작업 할 수 없다는 것입니다. –

2

합니까이 도움 당신은?

BigDecimal bd = new BigDecimal(3.134e67); 
String.valueOf(bd.doubleValue()) 
관련 문제