2017-02-14 11 views
-1

568e24 1.20536e8 1.3526e12 1.5145e11などの多数の巨大な数値を含む.datファイルがあります。そして私は既にこれらの数値をStringとして入力し、ArrayListに格納しました。ソーラーシステムの重力体を計算して表現するには、これらの数値を使用する必要があります。しかし、それはすでにDoubleとIntの上限を超えています。 Javaでこれらの数値を使用するにはどうすればよいでしょうか。大きなテキスト番号をBigIntegerに変換するときのNumberFormatException

これらのデータを入力し、これらのデータをArrayListのStringとして格納するコードです。

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

しかし、出力が間違っている:私は次のコードでBigIntigerに文字列を変更するためのBigIntegerを使用しようとしています

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]); 

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

答えて

関連する問題