【问题标题】:Percentage calculation百分比计算
【发布时间】:2011-06-01 11:23:35
【问题描述】:

我正在处理 ASP.NET MVC 2 中的进度条概念。这里我有一个 DropDownList,它有 10 个值。我想计算进度条的百分比,例如来自 DropDownList 的 10 个值,我有一个返回值 2 的查询。所以,在 10 个值中,我得到 2 个。应该显示“20% 完成”。如何进行此计算

【问题讨论】:

    标签: c# asp.net asp.net-mvc-2 drop-down-menu


    【解决方案1】:

    使用Math.Round():

    int percentComplete = (int)Math.Round((double)(100 * complete) / total);
    

    或手动舍入:

    int percentComplete = (int)(0.5f + ((100f * complete) / total));
    

    【讨论】:

    • 那么,completetotal 应该是 int 还是 double?谢谢。
    • 如果你完全按照这里写的那样使用它实际上并不重要。证明这个陈述是留给读者的练习:)
    • 你永远不应该使用浮点数(即双精度)来赚钱
    • 如果你用钱做任何事情,我真的,真的希望你不要在谷歌上搜索“如何计算百分比”:P 如果你是,请阅读更多关于浮点精度、银行家四舍五入的内容,尤其是“专业责任保险”
    【解决方案2】:

    (current / maximum) * 100。在你的情况下,(2 / 10) * 100

    【讨论】:

    • 非常感谢..如何四舍五入.. for ex (2 / 11) * 100 表示我应该怎么做...
    • 使用 Math.Round 然后决定你想要多少个小数位:)
    • 将其转换为 int。 (int)((2.0 / 11.0) * 100.0) = 18.
    • Count 和 DDLValues 是整数,因此您的除法是“整数除法”,返回整数结果(您不想要的女巫)。尝试将 Count 或 DDLValues 转换为双精度值。 (((double)Count / DDLValues)...
    • Result = Math.Round((double)(Count / DDLValues), 2) * 100;...这也显示错误。"cannot convert type double to int"
    【解决方案3】:

    使用 C# 字符串格式,您可以避免乘以 100,因为它会使代码更短更清晰,尤其是因为括号更少,并且可以避免向上取整代码。

    (current / maximum).ToString("0.00%");
    

    // 输出 - 16.67%

    【讨论】:

      【解决方案4】:

      数学上,从两个数字中得到百分比:

      percentage = (yourNumber / totalNumber) * 100;
      

      另外,从百分比计算:

      number = (percentage / 100) * totalNumber;
      

      【讨论】:

        【解决方案5】:

        您可以将百分比保留为小数 (value \ total),然后当您想要呈现给人类时,您可以使用 Habeeb's answer 或使用 string interpolation 您可以获得更干净的东西:

        var displayPercentage = $"{(decimal)value / total:P}";
        

        //Calculate percentage earlier in code
        decimal percentage = (decimal)value / total;
        ...
        //Now render percentage
        var displayPercentage = $"{percentage:P}";
        

        【讨论】:

        • 我在使用这里介绍的所有其他方法时都遇到了麻烦,但这个方法有效。
        【解决方案6】:

        请记住,如果您有两个整数,您可能需要将其中一个数字加倍

        (double)i / events.Count * 100
        

        【讨论】:

          【解决方案7】:

          在我的例子中,我设置了两个整数,并尝试计算百分比,并且总是得到 0;

          我的代码(之前)

          int Ff_Crm_Count = Ff_Crm.Count();
          int Unfollowed_Ff_Crm_Count = Unfollowed_Ff_Crm.Count();
          int The_Percentage = (Unfollowed_Ff_Crm_Count / Ff_Crm_Count) * 100);
          

          做了研究之后(之后)

          double Ff_Crm_Count = Ff_Crm.Count();
          double Unfollowed_Ff_Crm_Count = Unfollowed_Ff_Crm.Count();
          double The_Percentage = Math.Round((double)((Unfollowed_Ff_Crm_Count / Ff_Crm_Count) * 100),2);
          

          【讨论】:

            猜你喜欢
            • 2021-01-10
            • 1970-01-01
            • 2015-10-11
            • 2015-09-04
            • 2013-03-22
            • 2020-10-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多