【问题标题】:Calculating Integer Percentage计算整数百分比
【发布时间】:2014-11-12 10:00:10
【问题描述】:

所以我想将我的程序的百分比进度计算为最接近的整数值

在我的例子中让我们采取

int FilesProcessed = 42;
int TotalFilesToProcess = 153;

所以我首先尝试了:

Int TotalProgress = ((FilesProcessed / TotalFilesToProcess) * 100)

这返回了TotalProgress = 0

然后我尝试了

Int TotalProgress = (int)((FilesProcessed / TotalFilesToProcess) * 100)

这会导致编译器错误Cannot implicitly convert type decimal to int

我试过了

Int TotalProgress = Math.Round((FilesProcessed / TotalFilesToProcess) * 100)

并获取The call is ambiguous between decimal and double

所以现在我来这里寻求帮助?

【问题讨论】:

  • FilesProcessedTotalFilesToProcess是什么类型?
  • 或乘以 100 而不是除以 TotalFiles

标签: c# math percentage


【解决方案1】:

首先转换为double,这样它就不会计算integers之间的除法:

int totalProgress = (int)((double)FilesProcessed / TotalFilesToProcess * 100);

【讨论】:

    【解决方案2】:
    int FilesProcessed = 42;
    int TotalFilesToProcess = 153;
    int TotalProgress = FilesProcessed * 100 / TotalFilesToProcess;
    
    Console.WriteLine(TotalProgress);
    

    https://dotnetfiddle.net/3GNlVd

    【讨论】:

    • total 为 0 时会抛出异常
    【解决方案3】:

    如果你想更准确,可以使用:

    int TotalProgress = Convert.ToInt32(Math.Round(((decimal)FilesProcessed / TotalFilesToProcess) * 100, 0));
    

    如果数字更大,您将有所不同。例如

    int FilesProcessed = 42;
    int TotalFilesToProcess = 1530;
    

    带小数的结果是:2.74%,如果你使用前面的方法,你会得到 2%,用我建议的公式你会得到 3%。最后一个选项更准确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2013-11-14
      • 2011-06-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多