2012-05-21 4 views
2

У меня есть очень глупая проблема. У меня есть строка, содержащая «800.0000» (без кавычек), которую я пытаюсь преобразовать в число 800. Я использую эту команду, но ее не работает:Невозможно преобразовать строку (содержащую число) в int?

int inputNumber = Int32.Parse(inputString);

Я получаю FormatException, с сообщением «Строка ввода не была в правильном формате».

ответ

11

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

int inputNumber = Int32.Parse(inputString, NumberStyles.AllowDecimalPoint); 
3

800,000

имеет тип Double, не Integer

так,

double inputNumber = Double.Parse(inputString); 

Will работа для вас.

1

Исключение происходит потому, что ваш string не является int32. Сначала вам нужно сначала конвертировать в double.

double value = Convert.ToDouble(youString); 
1

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

double myDouble = Convert.ToDouble(string); 

работает аналогично с другими типами тоже,

int myInt = Convert.ToInteger(string); 
1

Поскольку вы передаете номер, который получил десятичные, вам необходимо использовать соответствующую цель тип - float или double

Так вы дадите

var value = Double.Parse(s); 

Вы можете забрать десятичные так:

var integer = (int)value; 

Но даже с Double.Parse вам нужно быть осторожным, так как он будет ожидать другой вход, на основе текущей культуры (System.Globalization.CultureInfo.CurrentCulture) ,

Так что пока

Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("en-US")) 

работает, как ожидалось

Double.Parse("800.00", System.Globalization.CultureInfo.GetCultureInfo("de-DE")) 

произведет значение "80000"

EDIT1 - добавлено:

Таким образом, вы можете использовать

Double.Parse("800.00", System.Globalization.CultureInfo.InvariantCulture) 

, чтобы предотвратить любое неправильное толкование, которое может привести к возникновению любых неприятностей.

0

Int32 valueInInt = (int) double.Синтаксический (inputString);

Смежные вопросы