首页>Program>source

我正试图对子总额,增值税百分比和 总计,但我不知道我在这里错过了什么.我所知道的数量100和增值税15%的正确计算是:小计= 86.96,增值税= 13.04,总计= 100(含增值税)。 但是我的代码给了我另一个结果.那么正确的代码是什么,我错过了什么?

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        row.Cells[dataGridView1.Columns["Amount"].Index].Value = (Convert.ToDecimal(row.Cells[dataGridView1.Columns["Qtty"].Index].Value) * 
            Convert.ToDecimal(row.Cells[dataGridView1.Columns["PurchasePrice"].Index].Value));
    }
    //datagridview column total in label
    decimal sum = 0;
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        sum += Convert.ToDecimal(dataGridView1.Rows[i].Cells[4].Value);
    }
    lblSum.Text = sum.ToString();
    //vat
    decimal vat = (sum * 15 / 100);
    lblVat.Text = vat.ToString();
    //subtotal 
    decimal subtotal = (sum - vat);
    lblSubtotal.Text = subtotal.ToString();
最新回答
  • 27天前
    1 #

    如果您尝试从包含价格(包括增值税)的总和中获得增值税间隔,则应更改此行

    decimal vat = (sum * 15 / 100);
    

    decimal vatpct = 15m;
    decimal vat = Math.Round(sum - (sum / (1 + ( vatpct / 100))),2);
    

    或简单地解释

    decimal vatpct = 1 + (100 / 15m);
    decimal vat = sum - Math.Round((sum / vatpct),2);
    

    当然,请记住从某些配置中加载该15常量,因为该值更改过频繁。

  • c#:更好的"清理"不记名令牌的方法
  • sql:根据日期BigQuery将年龄增加一年