2010-04-27 4 views
24

NumberFormatException을 얻으 려면 String을 정수로 변환하려고합니다. 그 이유는 꽤 분명합니다. 하지만 여기서 해결 방법이 필요합니다. 다음은 샘플 코드입니다.Java는 지수 표기법으로 숫자를 분석합니다.

public class NumberFormatTest { 
public static void main(String[] args) { 
    String num = "9.18E+09"; 
    try{ 
    long val = Long.valueOf(num); 
    }catch(NumberFormatException ne){ 
    //Try to convert the value to 9180000000 here 
    } 
} 
} 

논평 섹션에 나오는 논리가 필요합니다. 일반적인 논점이 좋습니다. 감사.

+0

가능한 복제본 : http://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly – CPerkins

+0

@CPerkins :이 질문은 숫자 질문에 관한 것만 큼 중복되는 것으로 생각하지 않습니다. 연결된 표기법은 표기법의 각 부분에 관한 것입니다. –

+0

@ Joachim : 충분히 공정해. – CPerkins

답변

69

사용 Double.valueOf()long에 결과를 캐스팅 :

Double.valueOf("9.18E+09").longValue() 
+0

+1, '길다'에 맞는 숫자는 그 길입니다. – Bozho

+0

좋은 해결책 .. 고마워. 캔트 응답을 지금 받아들이십시오, 7 분 더 기다려야합니다. :) – bragboy

+2

이것은 반올림 오류가 발생할 수 있음을 알고 있어야합니다. – DJClayworth

11
BigDecimal bd = new BigDecimal("9.18E+09"); 
long val = bd.longValue(); 

하지만이 작은 번호가 필요하지 않은 오버 헤드를 추가합니다. long으로 표시 할 수있는 번호는 Joachim Sauer의 솔루션을 사용하십시오.

+0

이것은 매우 깨끗해 보입니다. 감사! – bragboy