Эта ошибка должна быть простой, но я не могу заставить ее работать. Проблема заключается в том, что этот самый код работает раньше в программе. Я не вижу причин для отправки ошибки в этом экземпляре, а не в четырех предыдущих. Ссылайтесь на приведенный ниже код и не стесняйтесь высказывать любую критику, которая у вас может быть, поскольку это должно сделать меня лучше. Если это важно, я использую Sharp Develop 2.2.
Вот пример работающего кода:
void calc2Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(tb2_fla.Text) & String.IsNullOrEmpty(tb2_e.Text) | String.IsNullOrEmpty(tb2_fla.Text) & String.IsNullOrEmpty(tb2_e.Text) | String.IsNullOrEmpty(tb2_e.Text))
{
MessageBox.Show("Enter either kVA and Voltage or FLA and Voltage", "Invalid Data Entry", MessageBoxButtons.OK);
}
if (!String.IsNullOrEmpty(tb2_kva.Text) & !String.IsNullOrEmpty(tb2_e.Text))
{
decimal x, y, z;
x = decimal.Parse(tb2_kva.Text);
y = decimal.Parse(tb2_e.Text);
z = (x * 1000) / (1.732050808m * y); //the m at the end of the decimal allows for the multiplication of decimals
tb2_fla.Text = z.ToString();
tb2_fla.Text = Math.Round(z,2).ToString();
}
else
{
if (!String.IsNullOrEmpty(tb2_fla.Text) & !String.IsNullOrEmpty(tb2_e.Text))
{
decimal x, y, z;
x = decimal.Parse(tb2_fla.Text);
y = decimal.Parse(tb2_e.Text);
z = (x * y * 1.732050808m) / 1000; //the m at the end of the decimal allows for the multiplication of decimals
tb2_kva.Text = Math.Round(z,2).ToString();
}
Вот пример кода, который отправляет ошибку в теме сообщения:
void Calc4Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(tb4_fla.Text) && String.IsNullOrEmpty(tb4_e.Text) || String.IsNullOrEmpty(tb4_kw.Text) & String.IsNullOrEmpty(tb4_e.Text) || String.IsNullOrEmpty(tb4_e.Text))
{ //If values are entered improperly, the following message box will appear
MessageBox.Show("Enter either FLA and Voltage or kW and Voltage", "Invalid Data Entry", MessageBoxButtons.OK);
}
if (!String.IsNullOrEmpty(tb4_fla.Text)&& !String.IsNullOrEmpty(tb4_e.Text)&& String.IsNullOrEmpty(tb4_kw.Text))
{//If the user eneters FLA and Voltage calculate for kW
decimal x, y, z;
x = decimal.Parse(tb4_fla.Text);
y = decimal.Parse(tb4_e.Text);
z = (x*y)*(.8 * 1.732050808m);
tb4_kw.Text = Math.Round(z,0).ToString();
}
if (!String.IsNullOrEmpty(tb4_kw.Text) && !String.IsNullOrEmpty(tb4_e.Text) && String.IsNullOrEmpty(tb4_fla.Text))
{;//If the user enters kW and Voltage calculate for FLA
decimal x, y, z;
x = decimal.Parse(tb4_kw.Text);
y = decimal.Parse(tb4_e.Text);
z = (1000 * x)/(y * 1.732050808m)* .8;
tb4_fla.Text = Math.Round(z,0).ToString();
}
}
Я ценю любую помощь, которую могу получить. Спасибо.





.8m instead of .8
m принудительно интерпретирует литерал как десятичный.
В этой строке здесь:
z = (xу) (0,8 * 1,732050808 м);
вы указываете .8 как литерал, но без суффикса «m» литерал задает двойное значение.
z = (xу) (0,8 м * 1,732050808 м);
исправлю это.
Вы не сказали, какая это была линия, но я делаю ставку на эти две:
z = (x*y)*(.8 * 1.732050808m);
А также:
z = (1000 * x)/(y * 1.732050808m)* .8;
Обратите внимание, что ваш .8 не имеет квалификатора «m». Я вижу, что в любом другом месте вы это поставляли.
Спасибо, что указали на это. Я втайне надеялся, что все не так просто. :)