Как предотвратить исключение формата числа, вызванное преобразованием строки в int - PullRequest
0 голосов
/ 26 февраля 2019

Итак, я пытался преобразовать мою строку в целое число, и я получаю исключение в формате чисел.Я передаю строку 813.0 объекту ниже, но это не удается.

totals.setTotalPremium(Integer.parseInt(r.getTotalpremium().replace(",","").trim()));

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

Сначала рассмотрим, принимает ли setTotalPremium double или float.Или стоит ли.Если это так, используйте Double.parseDouble("813.0") или Float.parseFloat("813.0").

Если нет, решите, какое округление вы хотите.Если есть.Для 813.0 это, вероятно, просто, вам нужно 813. Но что, если это было 813,1, 813,5, 813,8?

Если вы хотите округлить до ближайшего int, используйте Math.round(Float.parseFloat("813.0")).Если вы хотите отклонить числа, которые не равны int:

    double doubleValue = Double.parseDouble("813.0");
    if (doubleValue != Math.rint(doubleValue)) {
        throw new IllegalStateException("Not a whole number: " + doubleValue);
    }

Редактировать: В своем коде вы заменяете , (запятая) пустой строкой.Если это для анализа чисел с тысячами разделителей, например 1,813.0, лучше этого не делать.Вместо этого используйте NumberFormat и / или DecimalFormat для разбора числа с разделителем / тысячами.

0 голосов
/ 26 февраля 2019

Вы можете разобрать его, чтобы удвоить, а затем извлечь значение типа int следующим образом:

    Double v = Double.parseDouble("813.0");
    totals.setTotalPremium(v.intValue());

Надеюсь, это поможет.

0 голосов
/ 26 февраля 2019

Попробуйте Double.parseDouble ("813.0"), поскольку ваши выходные данные возвращают десятичные значения.Integer.parseInt () полезен только в случае не десятичных чисел.

0 голосов
/ 26 февраля 2019

813.0 технически не является int, поскольку имеет десятичный знак.Это вместо float.Вы можете либо удалить все после (и в том числе) десятичного знака, либо проанализировать его как float, а затем преобразовать в int, используя любой метод, который вы предпочитаете (например, округление против усечения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...