Я читаю данные из внутренней базы данных. Код присваивает значение, считанное из базы данных, двойным.
if (Convert.ToDouble(PricefromString) == Price && PriceFound == false)
PricefromString считывается из базы данных.
В большинстве случаев код работает нормально, но я получаю FormatException, когда строковое значение представляет собой целочисленное значение. В этом конкретном случае, когда PricefromString = 77, я получаю исключение формата. Я попробовал отладку и проверил входную строку ToDouble(), которая бросает исключение.
Изменение: PricefromString имеет символ вставки пробела в конце. Он отлично работает, когда строка является двойным значением, например. 76.99, 77.01, но я получаю ошибку FormatException, когда цена достигает целочисленного значения.
Любые вести?
Может быть что-то еще, потому что если 77 имеет тип данных String, то определенно это сработает.
Проверьте, не содержит ли он других символов, таких как символы валюты.
Double.Parse
или Convert.ToDouble
генерирует исключение, если оно не может проанализировать заданное значение.
Если Double.TryParse
возвращает bool
указывает, удалось ли это сделать.
Попробуй это:
double value;
Double.TryParse(PricefromString, out value);
Таким образом, вы можете проверить, будет ли это работать или нет, а затем выполнить реальное преобразование, когда value
имеет value
boolean true
.
Подробнее об этом см. В этом ответе: Parse v. TryParse
но я получаю FormatException, когда строковое значение является целым значением. В этом конкретном случае, когда PricefromString = 77, я получаю исключение формата.
Нет, нет. Convert.ToDouble
будет отлично работать с строкой, представляющей целое число, как вы можете убедиться сами, запустив этот код:
Console.WriteLine(Convert.ToDouble("77"));
Он действительно распечатывает 77.
Я хотел бы настоятельно просить вас взглянуть на то, что именно ваша строка ввода.