2017-09-26 3 views
0

essayer de calculer le montant de pourcentage, mais il retourne toujours 0.erreur dans le calcul du pourcentage

foreach (DataGridViewRow ligne dans dataGridView1.Rows) { à double igst_amt;

  double amt = (Convert.ToDouble(row.Cells[dataGridView1.Columns[4].Index].Value)) * (Convert.ToDouble(row.Cells[dataGridView1.Columns[5].Index].Value)); 
      row.Cells[dataGridView1.Columns[6].Index].Value = Convert.ToString(amt); 
      igst_amt = (igst/100)*(amt); 
      MessageBox.Show(Convert.ToString(igst_amt)); 
      if (state == "o") 
      { 
       row.Cells[dataGridView1.Columns[9].Index].Value =Convert.ToString((cgst/100) *(amt)); 
       row.Cells[dataGridView1.Columns[11].Index].Value =Convert.ToString((sgst/100) * (amt)); 
      } 
      else if (state == "i") 
      { 
       row.Cells[dataGridView1.Columns[7].Index].Value = igst_amt; 
      } 
      double g_total = igst_amt + amt; 
      row.Cells[dataGridView1.Columns[13].Index].Value = Convert.ToString(g_total); 
      double t_g_total=0; 
      t_g_total+= g_total; 
     } 
+0

Quel est le type de 'igst'? –

+0

le type de données est double double igst = 0; double cgst = 0; double sgst = 0; –

+0

Est-ce que 'igst' devient non nul? –

Répondre

0

Brisons ce bas au code de base nécessaire pour reproduire le problème:

int igst = 10; 
double amt = 42; 
double igst_amt = (igst/100) * (amt); 

Console.WriteLine(igst_amt); 

Avec cela, j'obtenir un résultat de 0.

Cependant, si je l'écris comme ceci:

double igst = 10; 
double amt = 42; 
double igst_amt = (igst/100) * (amt); 

Console.WriteLine(igst_amt); 

Puis-je obtenir 4.2.

Je suppose que igst est réellement un nombre entier et que vous effectuez une opération arithmétique entière qui aboutira à 0.

Vous devez changer igst à double ou vous pouvez le faire:

int igst = 10; 
double amt = 42; 
double igst_amt = igst * amt/100; 

Console.WriteLine(igst_amt); 

Un simple changement au calcul et il fonctionne. En outre, en guise de remarque, vous semblez faire des calculs monétaires en utilisant double, mais vous devriez utiliser decimal car il est conçu pour les calculs de monnaie.