Convert.ToInt32(float) завершается неудачно при попытке конвертировать float в Int32

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

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

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

Что я делаю не так, чтобы конвертировать этот float в Int32?

Примечание: я бегу в BackgroundWorkerThread,

4 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам