C#增量数组如果我想生成一个从1到6递增0.01的数组,最高效的方法是什么?我想要的是一个包含mins和maxs的数组,以后可能会改变......像这样:x[1,1.01,1.02,1.03...]假设有一个开始、结束和一个增量值,你可以进一步抽象它:Enumerable.Repeat(start,(int)((end-start)/increment)+1).Select((tr,ti)=>tr+(increment*ti)).ToList()让我们分解一下:Enumerable。Repeat接受一个起始数字,重复给定数量的元素,并返回一个可枚举的(一个集合)。在这种情况下,我们从start元素开始,找到start和end之间的差异并将其除以增量(这给出了start和end之间的增量数),然后加一以包含原始数字。这应该给我们使用的元素数量。请注意,由于增量是小数/双精度,因此在转换为int时可能会出现舍入错误。Select转换给定特定选择器函数的可枚举的所有元素。在这种情况下,我们将获取生成的数字和索引,并将原始数字与索引相乘,再加上增量。最后,调用ToList会将集合保存到内存中。如果你发现自己经常使用它,你可以创建一个方法来为你做这个:)/increment)+1).Select((tr,ti)=>tr+(increment*ti)).ToList()}编辑:更改为使用repeat以便仍然保持非整数值。另外,这里没有错误检查,所以你应该确保检查增量不为0和startend*sign(increment)。将结尾乘以递增符号的原因是,如果您递增负数,则结尾应该在开头之前。最简单的方法是使用Enumerable.Range:double[]result=Enumerable.Range(100,500).Select(i=>(double)i/100).ToArray();(所以在可读性和代码行方面都非常高效)我只想做一个简单的功能。publicIEnumerableGetValues(decimalstart,decimalend,decimalincrement){for(decimali=start;i然后你可以把它变成一个数组,查询它,或者做任何你想做的事情。decimal[]result1=GetValues(1.0m,6.0m,.01m).ToArray();列表结果2=GetValues(1.0m,6.0m,.01m).ToList();列表结果3=GetValues(1.0m,6.0m,.01m).Where(d=>d>3&&d使用增量为0.01的for循环:ListmyList=newList();for(decimali=1;ielegantdouble[]v=Enumerable.Range(1,600).Select(x=>x*0.01).ToArray();高效使用for循环无论你做什么,都不要使用浮点数据类型(如双精度),它们不代表此类事物的舍入行为。转到十进制或使用整数作为因子.对于后者:Decimal[]decs=newDecimal[500];for(inti=0;i可以这样解。solution方法返回一个双精度数组double[]Solution(doublemin,intlength,doubleincrement){double[]arr=newdouble[length];双倍值=最小值;arr[0]=值;for(inti=1;ivaria=newfloat[500];//猜测varx=0;for(floati=1;i<6.01;i+=0.01){ia[x]=i;x++;你可以使用多线程来提高速度,但是除非你打算在非常慢的处理器上运行它,否则可能不值得。以上就是C#学习教程:C#增量数组共享的全部内容,如果有用的话送给大家,需要了解更多关于C#学习教程,希望大家多多关注---本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如需转载请注明出处:
