计算整数百分比

时间:2014-11-12 10:00:10

标签: c# math percentage

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

在我的例子中,我们来看看

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

现在我来这里寻求帮助?

3 个答案:

答案 0 :(得分:17)

首先转换为double,因此它不会计算integers

之间的分隔
int totalProgress = (int)((double)FilesProcessed / TotalFilesToProcess * 100);

答案 1 :(得分:7)

int FilesProcessed = 42;
int TotalFilesToProcess = 153;
int TotalProgress = FilesProcessed * 100 / TotalFilesToProcess;

Console.WriteLine(TotalProgress);

https://dotnetfiddle.net/3GNlVd

答案 2 :(得分:1)

如果要提高准确性,可以使用:

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

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

int FilesProcessed = 42;
int TotalFilesToProcess = 1530;

带小数的结果将是:2.74%,如果使用以前的方法,您会发现2%,而我建议的公式将获得3%。最后一个选项具有更高的准确性。