2017-02-14 2 views
-1

У меня есть .dat-файл, содержащий множество огромных чисел, таких как 568e24 1.20536e8 1.3526e12 1.5145e11. И я уже ввожу эти числа как String и сохраняюсь в ArrayList. Мне нужно использовать это число для вычисления и представления гравитационного тела в Солнечной системе. Но в java он уже превышает верхний предел Double и Int. Что я должен делать, чтобы использовать эти числа в Java.NumberFormatException при преобразовании больших текстовых номеров в BigInteger

Вот мой код, который вводит эти данные и сохраняет эти данные как String в ArrayList.

public static void main(String[] args) throws Exception{ 
    Scanner input = new Scanner(new File("solarsystem.dat")); 
    ArrayList<String[]> BodyData = new ArrayList<String[]>(); 
    input.nextLine(); 
    while(input.hasNextLine()){ 
     String x = input.nextLine(); 
     String[] x1 = x.split("[^a-zA-Z0-9().]+"); 
     BodyData.add(x1); 
    } 

    System.out.println(BodyData.get(0)[0]); 

Я пытаюсь использовать BigInteger изменить строку в BigIntiger на следующий код:

BigInteger reallyBig = new BigInteger("1898e24"); 
    System.out.print(reallyBig); 

Но выход неправильно:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1898e24" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:580) 
at java.math.BigInteger.<init>(BigInteger.java:470) 
at java.math.BigInteger.<init>(BigInteger.java:606) 
at tryScanner.main(tryScanner.java:18) 

Итак ... теперь .. что должен ли я использовать это большое количество, например 1898e24. Мне нужно изменить формат этого номера (1898e24), например 1898000000000 ...?

+2

BigDecimal - ваш друг – Andremoniy

+2

['BigDecimal'] (https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html). –

+0

Что вы должны делать? Гуглинг перед тем, как сбросить свой вопрос. Просто как тот. – Paul

ответ

Смежные вопросы