2014-02-13 3 views
1

Мне нужно преобразовать строку «1392298553937999872» в строку int. Строка - это метка времени. Обычно это должно быть возможно, чтобы преобразовать его в междунар с помощью:Преобразование строки (временная метка) в целое число

Integer i = Integer.valueOf(1392298553937999872); 

Но я получаю следующее исключение:

java.lang.NumberFormatException: Для ввода строки: «1392298553937999872»

Если я использую double, он работает, но номер неправильный. Итак, как я могу преобразовать временную метку в int?

ответ

3

число больше максимального значения Integer использования Long

Long l = new Long("1392298553937999872"); 
1

Число, которое вы пытаетесь преобразовать, превышает значение Integer.MAX_VALUE. Вам лучше использовать BigInteger.

BigInteger bigInteger = new BigInteger("1392298553937999872"); 
+0

Зачем использовать 'BigDecimal' для целого? Либо «Long», либо «BigInteger» лучше подходят. –

+0

Спасибо за комментарий. Я отредактировал ответ. –

4

преобразовать строку в длину.

String a="1392298553937999872"; 
long b= Long.parseLong(a); 
0

Значение, которое вы пытаетесь конвертировать больше, чем Integer.MAX_VALUE (2147483647), вы должны использовать один из альтернативных типов Long, BigInteger:

Long bigValue = Long.parseLong("1392298553937999872"); 
// ... 
Long bigValue = new Long("1392298553937999872"); 
// .. 
Long bigValue = Long.valueOf("1392298553937999872"); 
// ... 
BigInteger bigValue = new BigInteger("1392298553937999872"); 

При добавлении дополнительной библиотеки и значения могут отличаться, вы также можете использовать NumberUtils для apache commons. Метод NumberUtils.createNumber(String) будет адаптирован на основе предоставленного ввода:

Number bigValue = NumberUtils.createNumber(inputString); 
Смежные вопросы