我正在尝试在文本框中转换数字,但出现错误(输入字符串的格式不正确)。
我的代码是
int procent1 = Int32.Parse(proc1.Text);
我的文本框包含“ 0,5”。
我也尝试过Convert.ToInt32
,但结果相同。
我想念什么?
答案 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来做到这一点:
屏幕截图:
测试:0,5
代码:
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);
如果您想处理解析错误,则可以使用以上任何一种,并检查结果是否为假。