2012-06-22 6 views
1

표준 Java Double 클래스를 사용하여 부동 소수점 수를 가수로 구문 분석하면 지수에서 + 부호가 생략 된 것 같습니다. 예를 들어Java에서 가수로 부동 소수점 숫자 구문 분석

:

Double.parseDouble("1258124354E-28") returns 1.258124354E-19, but 
Double.parseDouble("1243544322E+24") returns 1.243544322E33 (not E+33) 

얻을 수있는 방법이있는 + 문자열 후 처리없이, 더블를 사용하여 서명?

BigDecimal 클래스가 더 나은 작업을합니다.

new BigDecimal("1243544322E+24").toString() does return 1.243544322E+33 

그러나 일반적으로 집중 처리에서 보여지는 것은 Double보다 느립니다.

+0

toString을 사용하여 인쇄하지 마십시오. NumberFormat의 인스턴스를 사용하십시오. –

답변

6

double 사이에 문자열 표현이 저장되어 있어야합니다.

double에는 텍스트 표현이 전혀 저장되지 않습니다. 1.243544322E33 1243544322E + 33입니다. 그것들은 같은 가치입니다.

지금 당신은 당신이 형식 다시 Stringdouble 값, 즉 다른 문제입니다 방법에 작업 할 경우 - 그러나 당신이하고있는 괜찮 분석. 당신은 어떤 정보도 잃지 않고 있습니다.

+0

예. 나는 정보가 손실된다고 걱정하지 않았으며, 단지 + 기호가 내 신청서에 필요하다는 것입니다. – PNS

2

Jon은 위와 같이 정확하며 메모리에 올바르게 표시됩니다. 가수를 +로 표시하려면 문자열 서식 지정에 대해 이야기하고 있습니다.

Long winded official formatter reference

이 코드를 실행하지 않은
import java.util.Formatter; 

double myDouble = Double.parseDouble("1243544322E+24"); 

Formatter formatter = new Formatter(); 
formatter.format("%+E", myDouble); //This should return with what you want, though with an extra + infront of the number 

그래서 나는 일을 할 것입니다 100 % 확실하지 않다. 형식 지정자의 +는 임의의 숫자에 대해 + 또는 - 부호를 배치하도록 강제합니다 ... 나는 가수까지 확장한다고 믿습니다.