将字符串转换为整数失败

时间:2019-01-04 07:11:18

标签: c# int

我正在尝试在文本框中转换数字,但出现错误(输入字符串的格式不正确)。

我的代码是

int procent1 = Int32.Parse(proc1.Text);

我的文本框包含“ 0,5”。

我也尝试过Convert.ToInt32,但结果相同。 我想念什么?

6 个答案:

答案 0 :(得分:1)

这里大多数人已经说过了。 使用“ TryParse”而不是“ Parse”。

您正在使用小数,因此必须使用可以处理小数的类型。

如果只需要逗号前的部分,则必须先处理。 (也许带有string.Split('。')或string.Split(','))

所以答案是:

var IsNumber = double.TryParse(proc1.Text, out double number);

还要确保您的文化设置正确。

答案 1 :(得分:0)

0.5不是整数,是更长的整数,请尝试将其转换为double。

Convert.ToDouble(proce1.Text);

答案 2 :(得分:0)

正如其他人提到的,0.5不是整数。如果要将其作为数字值处理,可以使用Single.Parse()方法。另外,对于来自用户输入的值,您将不确定输入是否传入(除非您进行了一些UI验证),您可以使用Single.TryParse(),这将返回一个布尔值,指示是否可以将字符串转换为数字类型并接受如果解析成功,则为具有解析值的输出参数。

float parsedValue = 0;
bool isNumber = Single.TryParse(proc1.Text,out parsedValue);
if (!isNumber)
{
// validation error
}

或者,如果您使用的是C#7,则可以摆脱其他变量:

bool isNumber = Single.TryParse(proc1.Text,out float parsedValue);
if (!isNumber)
{
// validation error
}
//do some stuff with parsedValue

答案 3 :(得分:0)

,您可以通过查看此示例代码来完成。我测试过很好。

我创建了一个简单的WindowsFormApplication来做到这一点:

屏幕截图:

enter image description here

enter image description here

enter image description here

测试:0,5

enter image description here

代码

private void button1_Click(object sender, EventArgs e)
{
   string IsNumberInStringFormat = TextBoxForEnteringANumber.Text;

   int IsNumber = 0;

   bool Check = int.TryParse(IsNumberInStringFormat, out IsNumber);
   string IsNotNumber = "Invalid Number";

   if (Check)
   {
      // IsNumber is not in Integer format.
      LabelForDisplayOutput.Text = IsNumber.ToString();
   }

   // I am Converting Number back to string for just a demonstration.
   LabelForDisplayOutput.Text = IsNumber.ToString(); 
   else
   {
      Char[] allCharacters = IsNumberInStringFormat.ToCharArray();
      foreach (var singleCharacter in allCharacters)
      {
         bool anotherCheck = int.TryParse(singleCharacter.ToString(), out IsNumber);
         if (anotherCheck)
         {
            LabelForDisplayOutput.Text += "\n";
            LabelForDisplayOutput.Text  += IsNumber.ToString();
         }
         else
         {
            LabelForDisplayOutput.Text += "\n";
            LabelForDisplayOutput.Text += "Invalid Character: " + singleCharacter;
         }

      }
   }
}

我希望您从本示例中了解到这一点。

答案 4 :(得分:-3)

如果要在文本框中查找所有整数,请尝试以下操作:

List<int> list = new List<int>();
foreach(System.Text.RegularExpressions.Match match in System.Text.RegularExpressions.Regex.Matches(textbox1.Text,"-?[0-9]+"))
{
    list.Add(Convert.ToInt32(match.Value));
}

答案 5 :(得分:-6)

如果您希望使用整数作为结果,请按以下方式使用。

int procent1;
bool result = int.TryParse(proc1.Text, out procent1);

如果您希望将小数作为结果,请按以下方式使用。

double procent1;
bool result = double.TryParse(proc1.Text, out procent1);

如果您想处理解析错误,则可以使用以上任何一种,并检查结果是否为假。