循环 - 从几个月开始的年数

时间:2013-03-26 16:51:24

标签: c# loops int

我有一个int个月(例如84个),我需要计算出使用84 = 7年等于多少年

我需要遍历初始数字并查看其中有多少个完整年份并打印结果

示例:

int count = 84;
for (int i = 12; i <= count; i++)
{
years = i;
}

这当然不起作用,它产生'84年',我应该生产7年。我还需要在年度计算后得到剩余的月份,所以如果初始数字是85,例如它将导致7年1个月。

6 个答案:

答案 0 :(得分:7)

使用标准数学运算代替循环:

int count = 84;
int years = count / 12;
int months = count % 12;

第一个是 division ,第二个是 modulus

因为count12都是整数count/12也会返回一个整数。因此,对于85,它将返回7,而不是7.1

更新

循环版本看起来像这样:

count = 84;
years = 0;
for (int i = 12; i <= count; i += 12)
{
    years++;
}

答案 1 :(得分:5)

使用循环执行此操作将如下所示:

int years = 0;
while (count >= 12) {
  count -= 12;
  years++;
}

但是,您可以在不循环的情况下执行相同的操作:

int years = count / 12;
count %= 12;

答案 2 :(得分:1)

试试这个:

DateTime t = new DateTime();
t = t.AddMonths(84);

int year = t.Year;    // year = 8
int month = t.Month;  // month = 1

答案 3 :(得分:0)

当然你只需要基本的数学运算:

int count = 84;
int years = (int)(count / 12);
int months = count % 12;

答案 4 :(得分:0)

int years = count / 12;
int remainingMonths = count % 12;

答案 5 :(得分:0)

感谢所有给出答案的人:非常感谢

我最终得到了这样的工作

 int employmentInMonthsAmount = this.MaxEmploymentHistoryInMonths;

                var intcounter = 0;
                int years = 0;
                for (var i = 0; i < employmentInMonthsAmount; i++)
                {
                    if (intcounter >= 12)
                    {
                        years++;
                        intcounter = 0;
                    }
                    intcounter++;
                }
                var monthsleft = intcounter;