Разобрать строку в целое число / длинное число / число с плавающей запятой / двойное число - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь правильно разобрать строковое представление числа.Parser предоставляет мне числовое значение Integer / Long / Float / Double, однако, когда я пытаюсь выполнить анализ с NumberFormat, например:

String number = "1.0";
NumberFormat.getNumberInstance().parser(number);

Возвращает тип Long.Однако, когда я пытаюсь разобрать "1.1", это правильно выводит Double (Почему бы не плавать?).Должен ли я написать свой собственный анализатор чисел или есть возможность настроить его так, чтобы он правильно выводил типы.Целые числа как целые числа (не длинные).Плавающая как Плавающая (не Двойная).Длинный как длинный и двойной как двойной.

1 Ответ

0 голосов
/ 11 октября 2018

Почему бы не использовать встроенные в Java парсеры чисел?

Double.parseDouble() Float.parseFloat() Integer.parseInt()

и т. Д. *

edit:

После просмотра вашего комментария вы можете попробовать использовать

    String number = "1.0";
    if (isInteger(number)) {
        //parse Int
    } else if (isDouble(number)){
        //parse Double
    }

и методы:

public static boolean isInteger(String s) {
    try {
        Integer.parseInt(s);
    } catch (NumberFormatException e) {
        return false;
    }
    return true;
}

public static boolean isDouble(String s) {
    try {
        Double.parseDouble(s);
    } catch (NumberFormatException e) {
        return false;
    }
    return true;
}

public static boolean isFloat(String s) {
    try {
        Float.parseFloat(s);
    } catch (NumberFormatException e) {
        return false;
    }
    return true;
}
...