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

Math 为什么我的百分比计算失败?,math,division,percentage,Math,Division,Percentage,我试图根据上面的内容计算一个价值(一个项目的总销售额)与另一个价值(所有项目的总销售额)的百分比,并得出以下代码: private double GetPercentageOfItem(decimal totPrice, decimal grandTotalPrice) { if ((totPrice <= 0.0M) || (grandTotalPrice <= 0.0M)) { return 0.0; } if (totPrice

我试图根据上面的内容计算一个价值(一个项目的总销售额)与另一个价值(所有项目的总销售额)的百分比,并得出以下代码:

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;
}
totPrice是单个TotalPrice值

但是,我并没有得到我期望的值,比如3.0%左右(或者2.N,或者1.N,或者0.N),而是在每个百分比成员中得到了异常的值,比如“318940.70340793”,分配方式如下:

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);
}
private double GetPercentageof Item(十进制totPrice,十进制GrandTotPrice)
{

如果((totPrice基于你所说的你所期望的……似乎你在寻找项目(1)占总数的百分比

例如,如果Item1=10美元,而totalCost=100美元 那么你要找的百分比是10%

在这种情况下,您只需将itemCost除以totalcost,然后乘以100

 var percent = itemCost / totalCost * 100;
(10/100*100)=10%

如果你实际上是在寻找增长的百分比,那么你得到的数字是正确的

想想当有人说“我们已经看到了200%的增长”这意味着价值翻了一番…所以如果我们看看你得到的数字318940.70340793% 如果我们除以100,我们得到3189.407

3189*215=687149.867(近似值)

因此,如果您要查找的是比您得到的值正确的增加百分比,但是如果您要查找Item1与GrandTotal相比的成本百分比,那么请使用我上面的公式


希望这有帮助!

基于您所说的您期望的……似乎您正在寻找项目(1)占总数的百分比

例如,如果Item1=10美元,而totalCost=100美元 那么你要找的百分比是10%

在这种情况下,您只需将itemCost除以totalcost,然后乘以100

 var percent = itemCost / totalCost * 100;
(10/100*100)=10%

如果你实际上是在寻找增长的百分比,那么你得到的数字是正确的

想想当有人说“我们已经看到了200%的增长”这意味着价值翻了一番…所以如果我们看看你得到的数字318940.70340793% 如果我们除以100,我们得到3189.407

3189*215=687149.867(近似值)

因此,如果您要查找的是比您得到的值正确的增加百分比,但是如果您要查找Item1与GrandTotal相比的成本百分比,那么请使用我上面的公式


希望这有帮助!

这不是很简单:
Percentage=totPrice/grandTotalPrice*100
?你正在将价格添加到产品使用中。为什么?如果我想以每小时5美元的价格租一辆jetski飞机两个小时,我希望支付10美元。你的算法将向他们收取7美元。如果你使用调试器,只需一步,就可以相对容易地发现此类错误通过逐行代码,同时查看变量中的值。@Pamblam我会很高兴作为一个客户,这个数学对于百分比的增加是正确的。687150比215大3190倍,因此增加了大约319000%。如果您想要一个项目相对于总值的百分比,那么数学就是
totPrice/grandTotalPrice*100
难道不只是:
Percentage=totPrice/grandTotalPrice*100
?你把价格加到了产品的使用上……为什么?如果我想以每小时5美元的价格租一辆jetski飞机两个小时,我希望支付10美元。你的算法会向他们收取7美元。如果你使用调试器,只需一步就可以相对容易地发现这样的错误逐行查看代码,同时查看变量中的值。@Pamblam我会很高兴作为一个客户,这个数学对百分比的增加是正确的。687150比215大3190倍,因此增加了大约319000%。如果您想要一个项目相对于总值的百分比,那么这个数学就是
totPrice/grandTotalPrice*100