Конвертировать String для удвоения в Java - PullRequest
267 голосов
/ 24 апреля 2011

Как я могу преобразовать String, например "12.34", в double в Java?

Ответы [ 13 ]

2 голосов
/ 09 января 2018

Использование Double.parseDouble() без окружающего блока try/catch может привести к тому, что потенциал NumberFormatException будет иметь введенную двойную строку, не соответствующую допустимому формату.

Guava предлагает для этого служебный метод, который возвращает null в случае, если ваша строка не может быть проанализирована.

https://google.github.io/guava/releases/19.0/api/docs/com/google/common/primitives/Doubles.html#tryParse(java.lang.String)

Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);

Во время выполнения некорректный ввод строки дает null, присвоенный valueDouble

1 голос
/ 12 марта 2019
String s = "12.34";
double num = Double.valueOf(s);
0 голосов
/ 17 июля 2018

Используется для преобразования любого числа String в удвоенное, когда вам нужно int, просто преобразуйте тип данных из num и num2 в int; взял все случаи для любой двойной строки с англ: "Bader Qandeel"

public static double str2doubel(String str) {
    double num = 0;
    double num2 = 0;
    int idForDot = str.indexOf('.');
    boolean isNeg = false;
    String st;
    int start = 0;
    int end = str.length();

    if (idForDot != -1) {
        st = str.substring(0, idForDot);
        for (int i = str.length() - 1; i >= idForDot + 1; i--) {
            num2 = (num2 + str.charAt(i) - '0') / 10;
        }
    } else {
        st = str;
    }

    if (st.charAt(0) == '-') {
        isNeg = true;
        start++;
    } else if (st.charAt(0) == '+') {
        start++;
    }

    for (int i = start; i < st.length(); i++) {
        if (st.charAt(i) == ',') {
            continue;
        }
        num *= 10;
        num += st.charAt(i) - '0';
    }

    num = num + num2;
    if (isNeg) {
        num = -1 * num;
    }
    return num;
}
...