2013-12-21 2 views
0

사용자에게 표시되는 이중 변수 서식의 문제가 있습니다. 변수는 double이어야하지만 일부 계산 후에는 E 부호를 포함하여 사용자에게 표시됩니다. 어떻게하면 전자 기호를 제거하고 정상적인 동작만을 보여줄 수 있습니까?Double 변수 서식 지정

감사합니다.

double formattedNumber = Double.parseDouble(new DecimalFormat("#############").format(myNum * calcal)); 
+2

왜 계산을 수행하고 결과를 문자열로 변환 한 다음 문자열을 다시 이중으로 구문 분석합니까? – CommonsWare

+0

myNum * calcal의 합계를 직접 계산하려고했지만 오류가 발생했습니다. –

+1

@MohamedHemdan 음, 다음에 시도한 것은 해결책이 아닙니다. –

답변

2

이중 값을 텍스트 표현으로 변환하는 다양한 방법이 있습니다. 가장 쉬운 방법은 문자열 서식을 사용하는 것입니다. 그것은 다음과 같은 인쇄 실행되면

@Test 
public void test() { 
    System.out.format("%s%n", 1.12345e37); 

    System.out.format("%e%n", 1.12345e37); 
    System.out.format("%f%n", 1.12345e37); 
    System.out.format("%g%n", 1.12345e37); 

    System.out.format("%E%n", 1.12345e37); 
    System.out.format("%G%n", 1.12345e37); 
} 

: 다음 단위 테스트를 고려 당신이 볼 수 있듯이, 다양한 형식의 패턴이 서로 다른 결과를

1.12345E37 
1.123450e+37 
11234500000000000000000000000000000000.000000 
1.12345e+37 
1.123450E+37 
1.12345E+37 

. % f 변종은 여러분이 원하는 대답을 가정합니다. 자세한 내용은 String.formatFormat String Syntax을 참조하십시오.

+0

데니스 감사합니다 ... 그것은 나와 함께 일했지만 6 자리 숫자 0이 내 번호에 나타납니다. 어떻게 그들을 제거 할 수 있을까요? –

+0

필자가 대답 한대로 [Format String Syntax] (http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax) 링크를 읽어야합니다. 모두 거기에 자세히 설명되어 있습니다. 그러나'% f' 대신'% .0f'를 사용하면 소수점 구분 기호 다음에 숫자가 나오지 않습니다 (또한 소수점 구분 기호도 제거됩니다). –