Simplecalculationdoesn'tworkforsomereason好吧,我正在尝试计算两个值的百分比。这应该很简单,但由于某些奇怪的原因它不起作用。我太累/太笨了,无法弄清楚。这是我的代码,它一直返回0,我调试时检查了值,FilesCompleted是295,TotalFilesCount是25002,返回值var正好是0,应该是1。privateintCalculatePercentComplete(intFilesCompleted,intTotalFilesCount){int返回值=(FilesCompleted/TotalFilesCount)*100;如果(返回值>100||返回值<1)返回1;否则返回返回值;调试的时候查了一下,FilesCompleted是295,TotalFilesCount是25002,returnvaluevar正好是0,应该是1。不是,因为所有的运算都是用整数来完成的。首先计算这个表达式:(FilesCompleted/TotalFilesCount)那是295/25002。整数运算的结果是0...然后当你乘以100,你仍然得到0。最简单的解决方案是先做乘法:intreturnvalue=(FilesCompleted*100)/TotalFilesCount;请注意,如果FilesCompleted大于int.MaxValue/100,它将溢出。您可以通过在浮点运算中执行所有操作来解决此问题:intreturnvalue=(int)((FilesCompleted*100.0)/TotalFilesCount);...或使用长整数算法:intreturnvalue=(int)((FilesCompleted*100L)/TotalFilesCount);当然,如果您不想拥有大量文件,则这些都不是必需的。(您可以获得4200万个文件...)另请注意,您的参数名称违反了.NET命名约定。它们应该是驼峰式-totalFilesCount和filesCompleted。intreturnvalue=(int)(((double)FilesCompleted/TotalFilesCount)*100);怎么样?这样做是将intFilesCompleted转换为double。例如,如果它是295,那么这会将它转换为295.0,以便除法发生在双精度上。不必将TotalFilesCount转换为双精度或双精度乘以整数(或整数乘以双精度)以返回双精度。所以返回的double结果是0.011799056075513958,乘以100所以返回结果是1.1799056075513958,最后转成int,返回1FilesCompleted/TotalFilesCount返回0.01,其中int格式为0,试试FilesCompleted*100/TotalFilesCount!确实,一个简单的错误,当使用int进行传输时,答案将是一个int。您的答案将介于0和1之间,因此向下舍入为0(int)。使用:intreturnvalue=(int)((FilesCompleted/(double)TotalFilesCount)*100);要使计算使用double作为十进制,然后将其乘以100并将其转换为int。以上是C#学习教程:简单的计算不知为何不行。分享的所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场,如涉及侵权,请谅解点击右侧联系管理员删除。如需转载请注明出处:
