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
,
Любое исключение, которое выдается из потока фонового работника, когда выполняется фоновая работа, присваивается этому свойству.