Java разобрать число в экспоненциальной записи - PullRequest
27 голосов
/ 27 апреля 2010

Я пытаюсь сделать преобразование строки в целое, для которого я получаю NumberFormatException Причина довольно очевидна. Но мне нужен обходной путь здесь. Ниже приведен пример кода.

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
  }
 }
}

Мне нужна логика, которая идет в разделе комментариев, общая была бы хороша. Спасибо.

Ответы [ 2 ]

77 голосов
/ 27 апреля 2010

Используйте Double.valueOf() и приведите результат к long:

Double.valueOf("9.18E+09").longValue()
13 голосов
/ 27 апреля 2010
BigDecimal bd = new BigDecimal("9.18E+09");
long val = bd.longValue();

Но это добавляет накладные расходы, которые не нужны с меньшими числами. Для чисел, представимых в long, используйте решение Йоахима Зауэра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...