views:

5416

answers:

3

This error should be a simple one but I cant seem to make it work. The problem lies in the fact that this very same code works earlier in the program. I don's see any reason for it to be sending an error on this instance and not the four previous ones. Reference the code below, and feel free to provide any criticism you may have as it should make me better. If it matters, I am using Sharp Develop 2.2.

Here is an example of the code that works:

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();

 }

Here is the example of the code that sends the error in the subject line of this post:

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();
  }

 }

I appreciate any help that I can get. Thank you.

+3  A: 
.8m instead of .8
Jimmy
Thank you for pointing that out. I was secretly hoping it wasn't that simple. : )
tejas_grande
What does the m stand for?
Alex
m forces the literal to be interpreted as a decimal.
Broam
m stands for money but works with decimal too
Chris S
+2  A: 

In this line here:

z = (x*y)*(.8 * 1.732050808m);

you specify .8 as a literal, but without the 'm' suffix, the literal specifies a double.

z = (x*y)*(.8m * 1.732050808m);

will fix it.

Dylan Beattie
+2  A: 

You didn't say which line it was, but I'm betting on these two:

z = (x*y)*(.8 * 1.732050808m);

And:

z = (1000 * x)/(y * 1.732050808m)* .8;

Note that your .8 does not have the 'm' qualifier. Every other place I see you did supply that.

Harper Shelby