это мой код;
string a="11.4";
int b,c;
b=2;
c= convert.toint32(a) * b
Я получаю эту ошибку;
Входная строка имела неправильный формат
как я могу преобразовать "а"?
это мой код;
string a="11.4";
int b,c;
b=2;
c= convert.toint32(a) * b
Я получаю эту ошибку;
Входная строка имела неправильный формат
как я могу преобразовать "а"?
Ну, 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
}
d
? 11.4
или 114.0
? Оба правильны в зависимости от культуры. Получение исключения Input string was not in a correct format
безопаснее, чем неправильное значение
- person L.B; 27.01.2012
На первый взгляд, числовой литерал «11.4» не является фактическим «int». Попробуйте использовать другой формат преобразования, например ToDouble().
Я пробовал следующий код на С# для справки.
string a = "11.4";
double num_a = Convert.ToDouble(a);
int b = 2;
double ans = num_a * b;
ans=228.0
. Читать комментарий Алексея Левенкова
- person L.B; 27.01.2012
Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("tr-TR");
или Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("de-DE");
.
- person L.B; 27.01.2012
a
не является допустимым целым числом, этоdouble
. - person Jack   schedule 27.01.2012