Как преобразовать строку в целое число в Visual Basic?

#vb.net

#vb.net

Вопрос:

Как мне преобразовать строку в целое число? Вот что я попробовал:

 Price = CInt(Int(txtPrice.Text))
  

Я удалил Int и все равно получил исключение.

Комментарии:

1. С какими исключениями вы сталкиваетесь? если вы используете vb.net в вашем коде удаляются десятичные разряды.

2. Я использую CInt() и не испытывал никаких проблем

Ответ №1:

Используйте

 Convert.toInt32(txtPrice.Text)
  

Это предполагает VB.NET .

Судя по названию «txtPrice», вам действительно нужно не целое число, а десятичное. Поэтому вместо этого используйте:

 Convert.toDecimal(txtPrice.Text)
  

Если это так, убедитесь, что все, что вы присваиваете этому, является десятичным, а не целым числом.

Комментарии:

1. В Vb.net .. Этот код получит исключение ‘Входная строка была не в правильном формате.;.

2. Я только что попробовал, но это не сработало. На этот раз я получил ошибку формата. Я все еще пытаюсь. У меня осталось почти 1 1/2 часа,

3. Dim Цена как целое Dim результат как логическое значение = Int32. Попробуйте проанализировать (txtPrice. Текст, цена)

4. Единственный способ, которым я могу получить ошибку формата с этим, — это на самом деле иметь ошибку (введите символ / символ). Для исправления этого потребуется простая проверка входных данных, которая не указана в качестве требования.

5.Это решение выдает ошибку для меня и, похоже, не очень надежное для производства из-за этой проблемы с разделом реестра support.microsoft.com/kb/942460 CInt(<string>) работает хорошо.

Ответ №2:

Вы можете попробовать:

 Dim Price As Integer 
Int32.TryParse(txtPrice.Text, Price) 
  

Комментарии:

1. Я думаю, что это действительно лучший ответ. Использование метода TryParse() Int32 или Decimal позволит обрабатывать другие данные, вводимые в текстовое поле, например, символы валюты и тому подобное. Он также не будет генерировать исключение, а просто вернет логическое значение, указывающее, прошло оно или не прошло.

Ответ №3:

Для преобразования string в int можно использовать следующее:

  • CInt(строка) для целых чисел
  • CDec(строка) для десятичных дробей

Для получения подробной информации обратитесь к функциям преобразования типов (Visual Basic).

Ответ №4:

Пожалуйста, попробуйте это, VB.NET 2010 год:

  1. Integer.TryParse(txtPrice.Text, decPrice)
  2. decPrice = Convert.ToInt32(txtPrice.Text)

От Мола Тшепо Кингсли (WWW.TUT.AC.ZA )

Ответ №5:

Преобразовать.ToIntXX не любит, когда ему передаются строки с десятичными дробями.

Для обеспечения безопасности используйте

 Convert.ToInt32(Convert.ToDecimal(txtPrice.Text))
  

Ответ №6:

Вы можете попробовать следующее:

 Dim valueStr as String = "10"

Dim valueIntConverted as Integer = CInt(valueStr)
  

Другой пример:

 Dim newValueConverted as Integer = Val("100")
  

Ответ №7:

Используйте Val(txtPrice.text)

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

Ответ №8:

Если в текстовом поле могут быть недопустимые символы, это вызовет исключение. Val Команда извлекает числа и удаляет недопустимые символы. Возвращает значение double. Итак, вы хотите преобразовать результат Val в любой нужный вам тип.

 Price = Convert.toInt32(Val(txtPrice.Text))
  

Это вернет 0 вместо выдачи ошибки при неверном вводе. Если это нежелательно, вы должны проверить, что входные данные действительны перед преобразованием.