计算整数百分比

本文关键字:百分比 整数 计算 | 更新日期: 2023-09-27 18:30:09

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

在我的例子中,让我们以为例

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

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

计算整数百分比

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

int totalProgress = (int)((double)FilesProcessed / TotalFilesToProcess * 100);
int FilesProcessed = 42;
int TotalFilesToProcess = 153;
int TotalProgress = FilesProcessed * 100 / TotalFilesToProcess;
Console.WriteLine(TotalProgress);

https://dotnetfiddle.net/3GNlVd

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

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

如果数字更大,你就会有差异。例如

int FilesProcessed = 42;
int TotalFilesToProcess = 1530;

小数的结果是:2.74%,如果你使用前面的方法,你会得到2%,根据我提出的公式,你会获得3%。最后一个选项具有更高的准确性。