百分比计算错误

时间:2017-09-26 02:21:06

标签: c# double percentage

尝试计算百分比金额但总是返回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;
        }

1 个答案:

答案 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,因为它是为资金计算而设计的。