错误比率计算
问题描述:
尝试计算百分比量,但它总是返回0。错误比率计算
的foreach(在dataGridView1.Rows的DataGridViewRow行) { 双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;
}
答
让我们打破这种下降到重现该问题所需的基本代码:
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
,因为它是专为货币计算而设计的。
'igst'的类型是什么? –
数据类型为双精度型 double igst = 0; double cgst = 0; double sgst = 0; –
'igst'是否变成非零? –