2017-01-27 2 views
1

Talend를 사용하여 ETL 프로젝트를 만들고 있습니다. 내 문자열을 Double로 변환하려면 Float.parseFloat (row4.Exportation2.trim())을 사용하십시오. 이 오류는이 오류를 제공합니다. 내 데이터가 "766,9997474" "1 345,43"(수출 2) 인 모양입니다. 이유를 알고있는 사람이 있습니까? 여기Talend 문자열을 Float으로 변환합니다.

Démarrage du job ConvertString a 14:03 27/01/2017. 
Exception in component tMap_1 
java.lang.NumberFormatException: For input string: "23,4897452" 
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) 
at sun.misc.FloatingDecimal.parseDouble(Unknown Source) 
at java.lang.Double.parseDouble(Unknown Source) 
at last.convertstring_0_1.ConvertString.tFileInputDelimited_1Process(ConvertString.java:1553) 
at last.convertstring_0_1.ConvertString.runJobInTOS(ConvertString.java:2075) 
at last.convertstring_0_1.ConvertString.main(ConvertString.java:1932) 
[statistics] connecting to socket on port 3464 
[statistics] connected 
6|Royaume-Uni|BA|1971|23,4897452 
[statistics] disconnected 
Job ConvertString terminé à 14:03 27/01/2017. [Code sortie=1] 

답변

1

여러 문제 :

  • 당신은 당신이 사용해 Double.parseDouble를 사용해야 두 배로 문자열로 변환하려면().
  • ","예상되는 문자가 아닙니다. "."이어야합니다. : ","char를 "."로 변환해야합니다. char : 입력이 Excel 또는 Delimited 파일 인 경우 tFileInput 구성 요소의 고급 설정 ("고급 분리 기호")에서이 옵션을 설정할 수 있습니다. 그렇지 않으면 당신은 당신이 yourString.replaceAll(" ", ""))

+0

으로 대체해야하는 String의 표준이 아닌 공간 안녕하세요, 내가 유일하게 지금까지 일을 대체 않았다가 yourString.replaceAll(",", "."))

  • 사용해야하고 난 몰라 내가 어떻게 이 결과를 고칠 수 있습니다 1 527.18 – Strix

  • +0

    입력 내용에 공백이 있으므로 replaceAll 메서드를 두 번 호출해야합니다 (한 번은 쉼표로, 다른 한 번은 공백으로 ""로 바꿉니다) – Corentin

    +0

    나는이 row3.Exportation2.replaceAll (",", "."). replaceAll ("", "")하지만 결과는 바뀌지 않습니다. 1 527.18 여전히 동일 – Strix

    관련 문제