Java конвертировать из научной нотации в плавающий - PullRequest
0 голосов
/ 17 сентября 2011

У меня есть программа, над которой я работаю, которая эффективно конвертирует двоичные, десятичные или шестнадцатеричные числа в другие форматы (не спрашивайте, зачем я это делаю, я, честно говоря, не знаю).Пока у меня идет только двоично-десятичное преобразование, и оно работает нормально, однако всякий раз, когда вводится двоичное число, состоящее из 8 цифр или более, оно выходит из строя.переводится в научную нотацию и становится 1.0011001E7, что на самом деле не будет проблемой, за исключением того, что способ преобразования чисел предполагает создание строки с тем же значением, что и число, и разбиение ее на отдельные символы.К сожалению, это означает, что у меня есть строка со значением «1,0011001E7» вместо «10011001», поэтому, когда я сокращаю символы, я нажимаю «».и программа не знает, что делать, когда я пытаюсь сделать с этим вычисления.Так что в основном мой вопрос сводится к тому, как заставить его использовать ненаучную версию записи для этих вычислений?

Спасибо за вашу помощь, и вот код, если он помогает вообще:

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

1 Ответ

6 голосов
/ 17 сентября 2011

Просто используйте BigDecimal

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

Обратите внимание, что здесь fltInput будет автоматически преобразован в double.

...