我需要获得钱包和纸张的净值(增值税@ 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);
答案 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);