尝试计算百分比金额但总是返回0。
foreach(dataGridView1.Rows中的DataGridViewRow行) { 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 :(得分:0)
让我们将其分解为重现问题所需的基本代码:
int igst = 10;
double amt = 42;
double igst_amt = (igst / 100) * (amt);
Console.WriteLine(igst_amt);
有了这个,我得到0
的结果。
但是,如果我这样写:
double igst = 10;
double amt = 42;
double igst_amt = (igst / 100) * (amt);
Console.WriteLine(igst_amt);
然后我得到4.2
。
我怀疑igst
实际上是一个整数,你正在执行整数运算,这将产生0
。
您应该将igst
更改为double
,或者您可以执行此操作:
int igst = 10;
double amt = 42;
double igst_amt = igst * amt / 100;
Console.WriteLine(igst_amt);
对计算进行简单的更改即可。
此外,作为旁注,您似乎正在使用double
进行货币计算,但您应该使用decimal
,因为它是为资金计算而设计的。