Большая проблема разбора десятичного числа - PullRequest
0 голосов
/ 26 ноября 2010

У меня проблема с большим десятичным числом нет. Следующий фрагмент кода объяснит мою проблему:

 BigDecimal parsedValue = (BigDecimal) decimalFormat.parse(input);

Здесь input - тип строки. Теперь предположим, что значение input равно 135abc24 , в этом случае значение parsedValue равно 135 , но я хочу проверить такие входные данные и выдать ошибку вместо усечения строки и остатка части. Просто хочу добавить входную строку, может также содержать экспоненциальные числа, поэтому я не могу даже проверить только числовые строки. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или вопрос неясен,

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 26 ноября 2010

Вы можете использовать BigDecimal String конструктор , чтобы создать BigDecimal (подробности см. По ссылке) и применить любые преобразования, которые вы хотите, к вашей входной строке до этого.Конструктор выдает NumberFormatException, если ввод не является допустимым представлением.

2 голосов
/ 26 ноября 2010

Согласно документации , DecimalFormat.parse() поддерживает второй аргумент в виде ссылки <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/text/ParsePosition.html" rel="nofollow">ParsePosition</a>, который обновляется с позиции, в которой анализ остановлен.Затем вы можете сравнить это с началом вашей строки и определить, была ли принята вся строка или нет.

...