我尝试根据here的内容计算一个值(一个项目的总销售额)与另一个值(所有项目的总销售额)的百分比,并提出此代码:
private double GetPercentageOfItem(decimal totPrice, decimal grandTotalPrice)
{
if ((totPrice <= 0.0M) || (grandTotalPrice <= 0.0M))
{
return 0.0;
}
if (totPrice == grandTotalPrice)
{
return 100.0;
}
//First: work out the difference (increase) between the two numbers you are comparing.
//Increase = New Number - Original Number.
double diff = Convert.ToDouble(grandTotalPrice) - Convert.ToDouble(totPrice);
//Then: divide the increase by the original number and multiply the answer by 100.
double prcntg = diff / Convert.ToDouble(totPrice);
//% increase = Increase ÷ Original Number × 100.
return prcntg*100;
}
grandTotalPrice是数据集中所有totalSales值的总和:
decimal grandTotalPrice = 0.0M;
. . .
foreach (DataRow productUsageByMonthDataRow in dtUsage.Rows)
{
grandTotalPrice = grandTotalPrice + Convert.ToDecimal(productUsageByMonthDataRow["TotalPrice"]);
}
totPrice 是各个TotalPrice值。
而不是获得我期望的价值,例如3.something百分比(或2.N,或1.N,或0.N),我得到了令人发指的价值,例如&#34; 318940.70340793 &#34;在每个百分比成员中,分配如下:
foreach (DataRow productUsageByMonthDataRow in dtUsage.Rows)
{
. . .
Decimal totPrice
Convert.ToDecimal(productUsageByMonthDataRow["TotalPrice"]);
. . .
var pupd = new ProduceUsagePivotData
{
ItemCode = itemCode,
ItemDescription = desc,
Unit = unit,
MonthYear = monthYear,
Quantity = qty,
TotalPrice = totPrice,
IsContractItem = contractItem,
Percentage = GetPercentageOfItem(totPrice, grandTotalPrice)
};
. . .
在我测试的数据中,grandTotalPrice为687149.867,第一个总销售额为215.38;那么这相当于318940.70340793?
感谢几个人的回答(我接受了第一个),以及我自己无法模仿的繁荣,花饰和巴洛克式的姜饼,我最终得到了这个:
private double GetPercentageOfItem(decimal totPrice, decimal grandTotalPrice)
{
if ((totPrice <= 0.0M) || (grandTotalPrice <= 0.0M))
{
return 0.0;
}
if (totPrice == grandTotalPrice)
{
return 100.0;
}
double d = Convert.ToDouble(totPrice) / Convert.ToDouble(grandTotalPrice) * 100;
return Math.Round(d, 2);
}
答案 0 :(得分:3)
基于你所说的你期望的......似乎你正在寻找总数百分比(1)。
例如,如果Item1 = $ 10且totalCost = $ 100 那你要找的百分比是10%?
在这种情况下,您只需将itemCost除以totalcost并乘以100
.gitconfig
(10/100 * 100)= 10%
如果您实际上在寻找增加的百分比,那么您获得的数字是正确的。
想想有人说什么时候&#34;我们已经看到了200%的增长&#34;这真正意味着价值翻了一倍...所以如果我们看看你得到的数字318940.70340793% 如果我们除以100,我们得到3189.407。
3189 * 215 = 687149.867(约)
因此,如果您正在寻找比您获得的值更高的百分比,那么如果您正在寻找Item1与GrandTotal相比的百分比成本,那么请使用我的上述公式。
希望这有帮助!