0

2 進数、10 進数、または 16 進数を他の形式に効果的に変換するプログラムを開発中です (なぜこれを行っているのかは聞かないでください。正直なところわかりません)。これまでのところ、2 進数と 10 進数の変換しか行っていませんが、問題なく動作しますが、入力された 2 進数が 8 桁以上になるとクラッシュします。

数値 10011001 を入力すると、科学表記法に変換されて 1.0011001E7 になりますが、数値を変換する方法には、番号を付けて個々の文字に分割します。残念ながら、これは「10011001」ではなく「1.0011001E7」という値の文字列を持っていることを意味します。そして、それを使って計算しようとすると、プログラムは何をすべきかわかりません。したがって、基本的に私の質問はこれに帰着します.これらの計算に非科学的表記法を使用するように強制するにはどうすればよいですか?

すべての助けに感謝します。これが役立つ場合のコードは次のとおりです。

//This Splits A Single String Of Digits Into An Array Of Individual Digits
public float[] splitDigits(float fltInput){
    //This Declares The Variables
    String strInput = "" + fltInput;
    float[] digit = new float[strInput.length() - 2];
    int m = 0;


    //This Declares The Array To Hold The Answer
    for (m = 0; m < (strInput.length() - 2); m++){
        digit[m] = Float.parseFloat(strInput.substring(m, m + 1)); //Breaks here
    }

    //This Returns The Answer
    return digit;
}
4

1 に答える 1

6

BigDecimalを使用するだけです

BigDecimal num = new BigDecimal(fltInput);
String numWithNoExponents = num.toPlainString();

ここで、fltInput は自動的に double に変換されることに注意してください。

于 2011-09-17T02:48:00.980 に答える