所以我想计算程序的百分比进度为最接近的整数值
在我的例子中,我们来看看
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
现在我来这里寻求帮助?
答案 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);
答案 2 :(得分:1)
如果要提高准确性,可以使用:
int TotalProgress = Convert.ToInt32(Math.Round(((decimal)FilesProcessed / TotalFilesToProcess) * 100, 0));
如果数字更大,您将有所不同。例如
int FilesProcessed = 42;
int TotalFilesToProcess = 1530;
带小数的结果将是:2.74%,如果使用以前的方法,您会发现2%,而我建议的公式将获得3%。最后一个选项具有更高的准确性。