计算整数百分比

14

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

在我的例子中,我们取

int FilesProcessed = 42;
int TotalFilesToProcess = 153;

所以我首先尝试了:

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

这返回了TotalProgress = 0

然后我尝试了

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

这会导致编译器出现错误,显示无法将decimal类型隐式转换为int

我尝试过

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

并且收到 The call is ambiguous between decimal and double 的模糊调用。

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


FilesProcessedTotalFilesToProcess是什么类型? - musefan
或者乘以100再除以TotalFiles - chouaib
3个回答

35

先将数值转换为double类型,这样就不会计算两个integers相除:

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

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

Console.WriteLine(TotalProgress);

https://dotnetfiddle.net/3GNlVd


1
当total为0时,这将抛出异常。 - ibubi

3

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

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

如果数字更大,就会产生差异。例如

int FilesProcessed = 42;
int TotalFilesToProcess = 1530;

带小数的结果将为2.74%,如果您使用先前的方法,您会得到2%。使用我提出的公式,您将获得3%。最后一个选项更精确。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接