Convert.ToDouble () генерирует исключение формата

1

Я читаю данные из внутренней базы данных. Код присваивает значение, считанное из базы данных, двойным.

if (Convert.ToDouble(PricefromString) == Price && PriceFound == false)

PricefromString считывается из базы данных.

В большинстве случаев код работает нормально, но я получаю FormatException, когда строковое значение представляет собой целочисленное значение. В этом конкретном случае, когда PricefromString = 77, я получаю исключение формата. Я попробовал отладку и проверил входную строку ToDouble(), которая бросает исключение.

Изменение: PricefromString имеет символ вставки пробела в конце. Он отлично работает, когда строка является двойным значением, например. 76.99, 77.01, но я получаю ошибку FormatException, когда цена достигает целочисленного значения.

Любые вести?

  • 0
    Вы можете использовать Double.TryParse (значение, номер выхода) для предотвращения получения исключения.
  • 0
    Спасибо, это исправлено. Могу ли я узнать, почему я получаю ошибку при использовании convert.ToDouble ()?
Показать ещё 1 комментарий
Теги:
parsing

2 ответа

2

Может быть что-то еще, потому что если 77 имеет тип данных String, то определенно это сработает.
Проверьте, не содержит ли он других символов, таких как символы валюты.

Double.Parse или Convert.ToDouble генерирует исключение, если оно не может проанализировать заданное значение.

Если Double.TryParse возвращает bool указывает, удалось ли это сделать.

Попробуй это:

double value;
Double.TryParse(PricefromString, out value);

Таким образом, вы можете проверить, будет ли это работать или нет, а затем выполнить реальное преобразование, когда value имеет value boolean true.

Подробнее об этом см. В этом ответе: Parse v. TryParse

  • 0
    Спасибо, я попробовал это, и это устранило проблему, какие-либо ссылки на то, что заставляло это не анализировать 77?
  • 0
    у него нет символов валюты, я проверял пробелы, но ToDouble (), кажется, хорошо работает с пробелами.
Показать ещё 4 комментария
2

но я получаю FormatException, когда строковое значение является целым значением. В этом конкретном случае, когда PricefromString = 77, я получаю исключение формата.

Нет, нет. Convert.ToDouble будет отлично работать с строкой, представляющей целое число, как вы можете убедиться сами, запустив этот код:

Console.WriteLine(Convert.ToDouble("77"));

Он действительно распечатывает 77.

Я хотел бы настоятельно просить вас взглянуть на то, что именно ваша строка ввода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню