2017-02-23 1 views
1

저는 Java를 배우고 있으며 다른 Java 유틸리티 및 숫자 형식 지정에 대한 섹션을 가르쳐 왔습니다. 그러나 내 서식은 책에서 말하는 것과 동일하게 작동하지 않습니다. 내 코드는 다음과 같습니다DecimalFormat이 Java에서 적절한 출력을 제공하지 않습니다.

책의 예에서
import java.text.NumberFormat; 
import java.text.DecimalFormat; 

public class Lessons { 

public static void main(String[] args) { 

    double d = 7.1348759272948202842847; 

    System.out.printf("%15e %n", d); 

    NumberFormat cashFormat = NumberFormat.getCurrencyInstance(); 

    System.out.println(cashFormat.format(d)); 

    double e = 14.9; 
    double f = 16.09805938020001; 
    double g = 12346; 

    DecimalFormat Dec_Format = new DecimalFormat("##0.##E0"); 

    System.out.println(Dec_Format.format(e)); 
    System.out.println(Dec_Format.format(f)); 
    System.out.println(Dec_Format.format(g)); 
} 

, 그것은 12345 ". ## 0 ## E0" "12.3E3"입니다으로 포맷 말한다. 받은 출력은 "12.345E3"입니다.

내가받는 출력은 이해할 만하지만 책과 일치하지 않기 때문에 책에 오류가 있는지 또는 내가 잘못하고 있는지 확실하지 않습니다.

정상 출력입니까?

답변

0

당신이 12.3E3를 인쇄하는 데 사용하는 형식은 너무 대신 올바르지 않습니다 :

DecimalFormat Dec_Format = new DecimalFormat("##0.##E0"); 
사용할해야

:

DecimalFormat Dec_Format = new DecimalFormat("##0.E0"); 

이 당신을 보여줄 것이다 :

7,134876e+00 
7,13 € 
14,9E0 
16,1E0 
12,3E3//<----------------- 
+0

내가 참조. 나는 현금 서식 부분을 정확하게 이해했다. 그러나 책이 보여준 방식 때문에 과학 표기법은별로 의미가 없었다. 귀하의 예제를 올바르게 이해하고 있다면 Java의 전자 표기법은 지정하지 않아도 소수점 한자리로 기본 설정되므로 ##을 추가하면 끝에 두 개의 숫자가 추가됩니다 (사용 가능한 경우). (예 : ## 0.E0 = 12.3, ## 0. ## E0 = 12.345E3) 책에서 구두/형식을 비교하는 것이 훨씬 의미가 있습니다. – AdamWestPhD

+0

그래서? 무슨 뜻입니까 내 솔루션이 잘못되었습니다 @AdamWestPhD :) –

+0

그것은 작동합니다 :) 도움을 주셔서 감사합니다 – AdamWestPhD

관련 문제