Подтвердить что ты не робот

Java анализирует число в экспоненциальной нотации

Я пытаюсь преобразовать строку в целое число, для которого я получаю 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
  }
 }
}

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

4b9b3361

Ответ 1

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

Double.valueOf("9.18E+09").longValue()

Ответ 2

BigDecimal bd = new BigDecimal("9.18E+09");
long val = bd.longValue();

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