我有一个简单的表格。我正在处理六个不同的数字范围,例如 0-1.57、1.57-6.35、6.35-12.7 等。
根据所选的类别 A、B、C 等,它会为每个范围返回不同的公差。每个类别的公差都在单独的列表中。
它的工作原理如下:“如果(选择了这个和这个),则使用此列表,否则,如果(选择了这个和这个),则使用另一个列表。
我的第一个范围正常工作,准确地从列表中提取数字。第二类的五个范围可以正常工作,但该类中的最后一个范围不会返回正确的容差。当它应该从 5 号位置抓取它时,它不断地抓取 4 号位置的公差。
这没什么奇怪的,我相信你会看到更好的方法来做到这一点,但我只是想学习不同的东西。
最后十一行粗体是未返回正确结果的行。它不断返回 B 类列表中 [4] 的结果,而不是数字 [5],但是,A 类列表工作正常。
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private List<Double> ClassAPlus = new List<Double> { 0.080, 0.130, 0.150, 0.200, 0.250, 0.250 };
private List<Double> ClassAMinus = new List<Double> { 0.030, 0.050, 0.080, 0.100, 0.100, 0.130 };
private List<Double> ClassBPlus = new List<Double> { 0.080, 0.250, 0.300, 0.400, 0.500, 0.500 };
private List<Double> ClassBMinus = new List<Double> { 0.030, 0.100, 0.100, 0.150, 0.150, 0.250 };
private void btnEnter_Click(object sender, EventArgs e)
{
double Diameter, Plus, Minus, Nominal, Tolerance;
if (double.TryParse(txtSize.Text, out Diameter)) ;
if (rbA.Checked == true && rbMetric.Checked == true)
if (Diameter <= 1.57)
{
Plus = (Diameter + ClassAPlus[0]);
Minus = (Diameter - ClassAMinus[0]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassAPlus[0].ToString("0.000") + " /- " + ClassAMinus[0].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 1.57 || Diameter == 6.35)
{
Plus = (Diameter + ClassAPlus[1]);
Minus = (Diameter - ClassAMinus[1]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassAPlus[1].ToString("0.000") + " /- " + ClassAMinus[1].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 6.35 || Diameter == 12.7)
{
Plus = (Diameter + ClassAPlus[2]);
Minus = (Diameter - ClassAMinus[2]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassAPlus[2].ToString("0.000") + " /- " + ClassAMinus[2].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 12.7 || Diameter == 19.05)
{
Plus = (Diameter + ClassAPlus[3]);
Minus = (Diameter - ClassAMinus[3]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassAPlus[3].ToString("0.000") + " /- " + ClassAMinus[3].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 19.05 || Diameter == 25.4)
{
Plus = (Diameter + ClassAPlus[4]);
Minus = (Diameter - ClassAMinus[4]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassAPlus[4].ToString("0.000") + " /- " + ClassAMinus[4].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 25.4)
{
Plus = (Diameter + ClassAPlus[5]);
Minus = (Diameter - ClassAMinus[5]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassAPlus[5].ToString("0.000") + " /- " + ClassAMinus[5].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
else
{
if (rbB.Checked == true && rbMetric.Checked == true)
{
if (Diameter <= 1.57)
{
Plus = (Diameter + ClassBPlus[0]);
Minus = (Diameter - ClassBMinus[0]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassBPlus[0].ToString("0.000") + " /- " + ClassBMinus[0].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 1.57 || Diameter == 6.35)
{
Plus = (Diameter + ClassBPlus[1]);
Minus = (Diameter - ClassBMinus[1]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassBPlus[1].ToString("0.000") + " /- " + ClassBMinus[1].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 6.35 || Diameter == 12.7)
{
Plus = (Diameter + ClassBPlus[2]);
Minus = (Diameter - ClassBMinus[2]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassBPlus[2].ToString("0.000") + " /- " + ClassBMinus[2].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 12.7 || Diameter == 19.05)
{
Plus = (Diameter + ClassBPlus[3]);
Minus = (Diameter - ClassBMinus[3]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassBPlus[3].ToString("0.000") + " /- " + ClassBMinus[3].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
if (Diameter > 19.05 || Diameter == 25.4)
{
Plus = (Diameter + ClassBPlus[4]);
Minus = (Diameter - ClassBMinus[4]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassBPlus[4].ToString("0.000") + " /- " + ClassBMinus[4].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");
}
**if (Diameter > 25.4)
{
Plus = (Diameter + ClassBPlus[5]);
Minus = (Diameter - ClassBMinus[5]);
Nominal = (Plus + Minus) / 2;
Tolerance = Plus - Nominal;
lblResult.Text = Nominal.ToString("0.000") + " ±" + Tolerance.ToString("0.000");
lblBilat.Text = Diameter.ToString("0.000") + " +" + ClassBPlus[5].ToString("0.000") + " /- " + ClassBMinus[5].ToString("0.000");
lblRange.Text = (Nominal - Tolerance).ToString("0.000") + " - " + (Nominal + Tolerance).ToString("0.000");**
};
}
}
}
}
}
这种情况对我来说看起来很奇怪
if (Diameter > 1.57 || Diameter == 6.35)
你肯定想要一个
<=
if (Diameter > 1.57 || Diameter <= 6.35)