Преобразовать строку в двойной C # - PullRequest
2 голосов
/ 20 февраля 2011

У меня есть поле в БД, которое является float.Мое приложение - WindowsForm.Мне нужно преобразовать значение в текстовом поле формата 43.27, чтобы удвоить.Когда я делаю это COnvert.ToDouble (txtbox.Text), я получаю исключение, говоря, что входная строка имеет неправильный формат.Как исправить эту проблему

Ответы [ 2 ]

9 голосов
/ 20 февраля 2011

Попробуйте указать культуру при синтаксическом анализе:

// CultureInfo.InvariantCulture would use "." as decimal separator
// which might not be the case of the current culture
// you are using in your application. So this will parse
// values using "." as separator.
double d = double.Parse(txtbox.Text, CultureInfo.InvariantCulture);

И чтобы обработать случай ошибки для изящного, а не бросать исключения вокруг, вы можете использовать метод TryParse :

double d;
if (double.TryParse(txtbox.Text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d))
{
    // TODO: use the parsed value
}
else
{
    // TODO: tell the user to enter a correct number
}
1 голос
/ 20 февраля 2011

Если вы хотите преобразовать строку в число, вы должны быть уверены, какой формат использует строка. Например. в английском есть десятичная точка («43,27»), а в чешском - десятичная запятая («43,27»).

По умолчанию используется текущая локаль; если вы знаете , что число использует перевод на английский язык, вам нужно явно указать культуру, например,

Convert.ToDouble(txtBox.Text, CultureInfo.InvariantCulture);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...