C# 输入字符串的格式不正确,行
好的,我修正了这个错误,但是每次我输入一个数字,消息框就会显示你不能输入这个数字,即使d=5.0/1=0和d=0.75/1=0.75,我也不知道为什么C# 输入字符串的格式不正确,行,c#,C#,好的,我修正了这个错误,但是每次我输入一个数字,消息框就会显示你不能输入这个数字,即使d=5.0/1=0和d=0.75/1=0.75,我也不知道为什么 任何帮助都将不胜感激这是因为您试图将字符串转换为整数,但遇到异常。 Convert类不处理异常。您应该使用int.TryParse而不是Convert.ToInt32,因为TryParse不会压碎您的程序,您可以相应地处理格式错误。仅当您100%确定输入可以转换时,才使用Convert 差不多 private void textBox4_Text
任何帮助都将不胜感激这是因为您试图将字符串转换为整数,但遇到异常。
Convert
类不处理异常。您应该使用int.TryParse
而不是Convert.ToInt32
,因为TryParse
不会压碎您的程序,您可以相应地处理格式错误。仅当您100%确定输入可以转换时,才使用Convert
差不多
private void textBox4_TextChanged(object sender, EventArgs e)
{
Double d;
if (!string.IsNullOrWhiteSpace(textBox4.Text))
{
d = Convert.ToDouble(textBox4.Text);
var c = d / 1;
if (c == 0.75)
{
string myString = c.ToString();
}
else if (c == 0.25)
{ }
else if (c == 0.50) { }
else if (c == 0.00) { }
else { MessageBox.Show("you can't enter this"); }
}
}
编辑:我刚刚检查了您是否希望与.75
进行比较,结果如下
if(int.TryParse(textBox4.Text,out d))
{
//continue with your code
}
else
{
//print something like 'that was not a number'
}
给猫剥皮的方法有很多:
private void textBox4_TextChanged(object sender, EventArgs e)
{
double d;
double yourValue = 0.75d; // or whatever value you want
if(Double.TryParse(textBox4.Text,out d))
if(d == yourValue)
MessageBox.Show(d.ToString);
else
MessageBox.Show("Not a number"); // or do nothing, whatever you want
}
当我写这篇文章的时候,我看到对话还在继续。。。double还有一个try parse方法:
string s = "3"; // you should have your text here
int i ;
// Cannot implicitly convert type 'int' to 'string'
// i=s;
//The as operator must be used with a reference type or nullable type ('int' is a non-nullable value type)
//i = s as int;
// OK
i = Convert.ToInt32(s);
// Ok, but if s is not number, will throw an exception
i = Int32.Parse(s)
// OK, try_parse will be true, and i will hold the value
// or try_parse will be false, and i will not be set
bool try_parse = Int32.TryParse(s, out i);
然后我需要将我的textbox4值转换为double,怎么做 您可以使用显式调用的方法。在这里如何使用这种方法 这个
Double.Parse(string,CurrentCulture)
as
是一种复合样式,包括AllowDecimalPoint
样式。您没有告诉我们您的线程区域性是什么,但如果您当前的线程区域性是点(
),则可以使用此方法
如果不是,您可以直接使用带有点(
)的格式作为十进制分隔符,例如。在texbox4中输入的值出现错误时,您可以使用Int32.TryParse()来避免错误当我尝试输入.75时,当我使用Int32.TryParse()时代码它给了我一个错误:没有重载方法“TryParse”接受1个参数,比如int num=0;Int32.TryParse(textBox4.Text,out num)
.75
不是整数。它是double
然后我需要将我的textbox4值转换为double,怎么做?这并不能解决为什么他的输入不能转换为整数的根本问题。当我使用你的Int.TryParse()时代码给了我一个错误:“TryParse”方法没有重载1个参数显示我可以比较0.75和我在textbox4中输入的输入吗?因为我不能用==((c==.75))比较double。你可以比较它们,但比较浮点数时不是100%准确,这是因为你输入的不是你接受的4个值中的任何一个。
public static double Parse(String s, IFormatProvider provider)
{
return Parse(s, NumberStyles.Float| NumberStyles.AllowThousands,
NumberFormatInfo.GetInstance(provider));
}
public static double ToDouble(String value)
{
if (value == null)
return 0;
return Double.Parse(value, CultureInfo.CurrentCulture);
}
public static double Parse(String s, IFormatProvider provider)
{
return Parse(s, NumberStyles.Float| NumberStyles.AllowThousands,
NumberFormatInfo.GetInstance(provider));
}
string text = "5.0"; // or 5.0 or .75 or 23 or ..
string err = "input is not a number!";
if (string.IsNullOrWhiteSpace(text))
{
MessageBox.Show(err);
return;
}
Double d;
// using CultureInfo.InvariantCulture - assuming that decimal point will always be "."
if (!Double.TryParse(text, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d))
{
MessageBox.Show(err);
return;
}
// at this point there is a "d" variable 100% a number, do whatever you want with it
// AND BTW 5.0/1 = 5.0, not 0 !!
MessageBox.Show(d.ToString());
var c = d / 1; //WHY is this there? Every number (even negative number) divide by 1 is the same number, not matter if it is 4 or 100565.432345 or googol ;)
string myString = String.Empty;
if (c == 0.75)
myString = c.ToString();
else if (c == .25)
myString = c.ToString();
else if (c == .5)
myString = c.ToString();
// etc, etc.. don't know your use case