Сбой Convert.ToInt32 (float) при попытке преобразовать float в Int32

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

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

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

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

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

6
задан 24 August 2010 в 15:27
поделиться

4 ответа

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

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

8
ответ дан 8 December 2019 в 14:38
поделиться

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

int productQuantity = Convert.ToInt32(double.Parse("1.00"));
6
ответ дан 8 December 2019 в 14:38
поделиться

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

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

2
ответ дан 8 December 2019 в 14:38
поделиться

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

0
ответ дан 8 December 2019 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: