Ошибка «значение не в правильном формате» при преобразовании строки в int32 - PullRequest
0 голосов
/ 27 января 2012

это мой код;

string a="11.4";

int b,c;

b=2;

c= convert.toint32(a) * b

Я получаю эту ошибку;

Входная строка была в неправильном формате

как я могу конвертировать "а"?

Ответы [ 2 ]

4 голосов
/ 27 января 2012

Ну, a просто не является целочисленным значением - вместо него можно использовать Convert.ToDouble(). Чтобы избежать ошибок синтаксического анализа в случае, если есть возможность, используйте double.TryParse() вместо:

string a = "11.4";
double d;

if (double.TryParse(a, out d))
{
    //d now contains the double value
}

Редактировать:

Принимая во внимание комментарии, конечно, всегда лучше указывать настройки культуры. Вот пример использования независящих от культуры настроек с double.TryParse(), что приведет к 11.4 как результат:

if (double.TryParse(a, NumberStyles.Number, CultureInfo.InvariantCulture, out d))
{
    //d now contains the double value
}
1 голос
/ 27 января 2012

С первого взгляда, числовой литерал "11.4" не является действительным "int".Попробуйте другой конвертирующий формат, такой как ToDouble ()

. Я попробовал следующий код в C # для вашей справки.

        string a = "11.4";
        double num_a = Convert.ToDouble(a);
        int b = 2;
        double ans = num_a * b;
...