好吧,我正在尝试计算两个值的百分比。这应该非常简单,但由于某些奇怪的原因它不起作用。我太累了/太笨了,无法弄清楚。
这是我的代码,它一直返回 0,我在调试时检查了这些值,FilesCompleted 为 295,TotalFilesCount 为 25002,返回值 var 只是 0,它应该已经是 1 了。
private int CalculatePercentComplete(int FilesCompleted, int TotalFilesCount)
{
int returnvalue = (FilesCompleted / TotalFilesCount) * 100;
if (returnvalue > 100 || returnvalue < 1) return 1;
else return returnvalue;
}
我在调试时检查了这些值,FilesCompleted 为 295,TotalFilesCount 为 25002,返回值 var 只是 0,它应该已经是 1 了。
不,因为所有算术都是用整数完成的。所以首先计算这个表达式:
(FilesCompleted / TotalFilesCount)
即 295 / 25002。结果integer算术结果是 0...然后你将它乘以 100,你就得到了still得到 0。最简单的解决方法就是先进行乘法:
int returnvalue = (FilesCompleted * 100) / TotalFilesCount;
请注意,如果FilesCompleted
大于int.MaxValue / 100
。您可以通过执行浮点算术中的所有操作来解决此问题:
int returnvalue = (int)((FilesCompleted * 100.0) / TotalFilesCount);
...或通过使用long
整数算术:
int returnvalue = (int)((FilesCompleted * 100L) / TotalFilesCount);
当然,如果您不希望文件数量过多,那么这些都不是必需的。 (最多 4200 万个文件就可以了...)
附带说明一下,您的参数名称违反了 .NET 命名约定。它们应该是驼峰式的 -totalFilesCount
and filesCompleted
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)