2017-03-10 5 views
1

私はCSVファイルを持っていて、1つの列は科学記法に設定されています。 iはコードApache CSVParserを使用して科学的表記でない番号を取得

step1 CSVFormat csvFormat = CSVFormat.DEFAULT.withIgnoreHeaderCase(true); 
step2 CSVParser csvParser = new CSVParser(fileReader, csvFormat); 
step3 List<CSVRecord> csvRecords = csvParser.getRecords(); 

に従うことにより、(4.67E + 5のような)科学的表記で番号を取得すると、私はすべての通常の値に(STEP3で)csvRecordsに存在する指数表記を転送するために使用できる任意の方法があります(文字列型、int型、long ...など)、通常値はcsvRecordsに格納されています(step3)。

答えて

0

CSVRecordメソッドget()を使用してStringを返し、テキストを自分で変換することができます。

方法Double.parseDouble(String)は非常によく適合するはずです。

UPDATE

たとえば、あなたのケース

String n = "4.67E+5"; 
System.out.println(Double.parseDouble(n)); 

戻り

返事が遅れ申し訳ありません
467000.0 
+0

インチ私のstep3の後、** get()**を使って** String **を取得し、それをdoubleに変換することを意味しますか?しかし** CSVParser()**の後、Stringのデータはまさに '4.67E + 5'の文字列であり、私は '467123'のようなものではありません。パーサーする前に '4.67E + 5'を '467123'にする方法が不思議です。ありがとう! :) – Wilde

+0

@Wildeはい、 'Double.parseDouble'はあなたが必要とするものです。' 4.67E + 5'で使用すると、メソッドは '467123'を返します。私はちょうど私の答えを更新しました。 – freedev

+0

あなたの答えをありがとう。本当に効果的な方法です。いくつかのエラーは、csvファイルの不正なデータが原因です。 – Wilde

関連する問題