Java NumberformatException с длинным преобразованием CSV

Я пытаюсь импортировать файл CSV в Java, но когда я достигаю значения метки времени (например: 135824328205), я получаю следующее сообщение:

02–25 10:40:48.629: W/System.err(23341): java.lang.NumberFormatException: 1.35998E+12

Я хотел бы сохранить его как длинное значение, но это не работает, вот мой код:

in.setTS(Long.parseLong(dataArray[2]));

Кто-нибудь может мне помочь ? Спасибо.


person Karoly    schedule 25.02.2013    source источник
comment
Каково содержимое dataArray[2]?   -  person vikingsteve    schedule 25.02.2013
comment
1.35998E+12 не долго   -  person PermGenError    schedule 25.02.2013
comment
@PremGenError: это не так. но если я открою csv с помощью блокнота, я увижу там длинное значение   -  person Karoly    schedule 25.02.2013
comment
Каково содержимое dataArray[2] и как вы получаете его из файла CSV?   -  person matt freake    schedule 25.02.2013
comment
содержимое dataArray[2] = 1360331885000 , это строка   -  person Karoly    schedule 25.02.2013
comment
Похоже, что-то преобразует простое целочисленное значение в вашем файле в экспоненциальную строку. Вы можете использовать приведенный ниже ответ для анализа экспоненциальных значений. Или, если вам интересно, отследите, что конвертирует вашу ценность.   -  person matt freake    schedule 25.02.2013


Ответы (2)


Как вы можете видеть здесь:

in.setTS(Double.valueOf(dataArray[2]).longValue());

в случае, если dataArray[2] содержит соответствующую экспоненциальную запись в виде строки

Здесь также может помочь BigInteger. .

person BobTheBuilder    schedule 25.02.2013

Для больших чисел очень полезно использовать BigInteger

BigInteger value = new BigInteger(dataArray[2], 10);

Предполагая, что dataArray[2] является строкой

См. документацию.

person asifsid88    schedule 25.02.2013