为什么我的百分比计算失败?

时间:2016-10-21 16:12:55

标签: math division percentage

我尝试根据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);
}

1 个答案:

答案 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相比的百分比成本,那么请使用我的上述公式。

希望这有帮助!