拆分特定尺寸的件数

时间:2012-03-17 06:28:17

标签: c# math

我的号码为33,并希望将其拆分为10以获取列表30,20,10,0,我还需要删除号码3

当然,所有数字都是例子,它们可以改变。

我该怎么做?我大脑的数学部分休息了一天。

3 个答案:

答案 0 :(得分:2)

将10的模数减去数字中的数字,然后除以10。创建一个增量值为10,长度为n / 10的列表。

Num = num - (num % 10);
list<int> stuff;
for (int i = 0; i == (num /10); i++)
     stuff.add((i*10));

有点晚了,我喝了啤酒,所以我的代码可能有点过时了。

答案 1 :(得分:1)

List<int> Splitter(int num, int mult)
{
   if(mult<=0)
       return null;

   int sign = 1;
   if(num < 0)
   {
       num = - num;
       sign = -1;
   }
   var result = new List<int>(num / mult);

   num = num - num % mult;
   while(num >= 0)
   {
       result.Add(num);
       num -= mult;
   }
   return result;
}

但这并不好玩。让我们尝试LINQ吧。我会假设一切都是积极的。

Enumerable.Range((num + mult - 1) /mult).Select(x=>x*mult).Reverse();

Range参数为num / mult四舍五入。

答案 2 :(得分:1)

这会将整数分解成任意大小的块(不仅仅是10):

static public IEnumerable<int> BreakUpInteger(int input, int chunkSize)
{
    if(chunkSize <= 0)
    {
        throw new ArgumentException("Chunk size must be greater than zero.", "chunkSize");
    }

    if(input <= 0)
    {
        throw new ArgumentException("Input must be greater than zero.", "input");
    }

    for (var i = 1; i <= input / chunkSize; i++)
    {
        yield return i * chunkSize;
    }
}