Convert.ToInt32 (float) завершается неудачно при попытке конвертировать float в Int32 - PullRequest
6 голосов
/ 24 августа 2010

Никаких исключений не выдается, функция просто останавливается в этом операторе:

int productQuantity = Convert.ToInt32("1.00");

и возвращает.

Что я делаю не так, чтобы преобразовать это число с плавающей точкой в ​​Int32?

Примечание: я работаю в BackgroundWorkerThread.

Ответы [ 4 ]

8 голосов
/ 24 августа 2010

В этом случае выдается исключение, которое просто не появляется в отладчике. Эта строка не в формате, который можно преобразовать в тип Int32 и, следовательно, выдает и исключение. Вы можете проверить это, поместив его в блок try / catch, если IDE не сотрудничает.

Наилучший подход здесь, вероятно, состоит в том, чтобы преобразовать строку в double, а затем вручную привести ее к int. Это открывает дверь для потери данных из-за различий в точности. Но, учитывая, что ваши данные представлены в формате float, это неизбежно, если вы хотите, чтобы конечный продукт был int

6 голосов
/ 24 августа 2010

Вам нужно сначала преобразовать его в double, а затем преобразовать в Int32.

int productQuantity = Convert.ToInt32(double.Parse("1.00"));
2 голосов
/ 24 августа 2010

Выдается исключение, просто чтобы увидеть его, нужно проверить свойство RunWorkerCompletedEventArgs.Error в обработчике событий на BackgroundWorker.RunWorkerCompleted.

Любое исключение, которое выдается из потока фонового работника, когдавыполняется фоновая работа, назначается этому свойству.

0 голосов
/ 24 августа 2010

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

...