c#中的十进制计算出错

时间:2013-11-17 18:26:01

标签: c# winforms decimal date-arithmetic

我在C#中使用Windows表单应用程序计算税金并添加总计。点击按钮获得总数后,应计算税额。如果没有十进制数字它正在工作,但是当它必须计算十进制数时给出错误“输入字符串格式不正确”

TotTax.Text = (Convert.ToInt32(textboxnettotal.Text) * (0.12)).ToString();
            textBox_GrnTot.Text = (Convert.ToInt32(textboxnettotal.Text) + Convert.ToInt32(TotTax.Text)).ToString();

这是我的代码

  1. 当我在数据网格视图十进制数字的c列中计算总数时,它没有给我十进制值但是我在整个文本框中得到平衡完全无答案。

              int sum = 0;
            for (int i = 0; i < dataGridView1.Rows.Count; ++i)
            {
                sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value);
            }
                  textboxnettotal.Text = sum.ToString();
            RowCount++;
    

4 个答案:

答案 0 :(得分:3)

使用Convert.ToDecimal代替Convert.ToInt32,以确保您的sum被声明为decimal

答案 1 :(得分:1)

您要转换为int

Convert.ToInt32不支持小数。请改用Decimal数据类型。它允许小数,并且没有floatdouble的奇怪舍入行为。

答案 2 :(得分:1)

您可以将Tryparse()方法与InvariantCulture

一起使用
decimal myvalue;
if (decimal.TryParse(dataGridView1.Rows[i].Cells[5].Value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out myvalue))
{
  sum += myvalue;
 }

完整代码:

decimal myvalue;
decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count; ++i)
{
    if (decimal.TryParse(dataGridView1.Rows[i].Cells[5].Value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, out myvalue))
    {
      sum += myvalue;
     }
}
  textboxnettotal.Text = sum.ToString();
  RowCount++;

答案 3 :(得分:0)

double sum = 0;
    for (int i = 0; i < dataGridView1.Rows.Count; ++i)
    {
        sum += Convert.Todouble(dataGridView1.Rows[i].Cells[5].Value);
    }
          textboxnettotal.Text = sum.ToString();
    RowCount++;