获取净增值值C#中的增值税值

时间:2015-07-18 17:31:21

标签: c#

我需要获得钱包和纸张的净值(增值税@ 20%),如下所示,加在一起

        {
this.transaction.netValue = Math.Round(Convert.ToDecimal(wallet) + Convert.ToDecimal(paper), 2);
        }

然后获得已建立钱包和纸张净值的增值税(20%)

      {
    transaction.vatAmount = Round(Convert.ToDecimal(wallet) + Convert.ToDecimal(paper), 2);
      }

我知道如何在excel中执行公式,但在c#中遇到困难

更新

this.transaction.netValue = Math.Round(Convert.ToDecimal([wallet]/1.2m) + Convert.ToDecimal([paper]/1.2m), 2);

3 个答案:

答案 0 :(得分:0)

首先转换为十进制然后除以1.2米

答案 1 :(得分:0)

假设钱包和纸币中的值实际上是有效的十进制数,那么您需要应用

   decimal totalValue = Convert.ToDecimal(wallet) + 
                        Convert.ToDecimal(paper);
   decimal netValue = totalValue / 1.2m;
   this.transaction.netValue = Math.Round(netValue, 2);

不要在字符串周围放置方括号,也不要将分区放在您传递给Convert.ToDecimal的参数(需要字符串)中

当然这可以写在一行中但是因为你再次重新计算netValue vatAmount然后使用临时变量更好,因为你可以重复使用它来进行后续计算 (顺便说一下vatAmount = totalValue - netValue,对吗?)

相反,如果您的输入不能保证是正确的十进制值,那么您应该使用decimal.TryParse

   decimal walletValue;
   decimal paperValue;
   if(!decimal.TryParse(wallet, out walletValue))
   {
        MessageBox.Show("Not a valid decimal value for wallet");
        return;
   }
   if(!decimal.TryParse(paper, out paperValue))
   {
        MessageBox.Show("Not a valid decimal value for paper");
        return;
   }
   decimal totalValue = walletValue + paperValue;
   decimal netValue = totalValue / 1.2m;
   this.transaction.netValue = Math.Round(netValue, 2);
   this.transaction.vatValue = Math.Round(totalValue - vatValue, 2);

答案 2 :(得分:0)

您正在看到波浪线,因为您正在尝试划分两种不同类型的数据类型。首先你将钱包转换为十进制,然后你将它除以1.2这是双倍的,你需要将它改为十进制。来自decimal (C# Reference)

  

如果要将数字实数文字视为十进制,请使用   后缀m或M.如果没有后缀m,则将数字视为double   并生成编译器错误。

所以你的最终代码将如下

this.transaction.netValue = Math.Round(Convert.ToDecimal(wallet) / 1.2m + Convert.ToDecimal(paper) / 1.2m, 2);