C# 循环-从月份算起的年数

C# 循环-从月份算起的年数,c#,loops,int,C#,Loops,Int,例如,我有一个整数月份84,我需要计算出它等于多少年,用84=7年 我需要循环查看初始数字,看看有多少完整的年份,然后打印结果 例如: int count = 84; for (int i = 12; i <= count; i++) { years = i; } 当然,这不起作用,它产生了“84年”,而我应该产生7年。我还需要得到年份计算后的剩余月份,因此,如果初始数字为85,则结果为7年1个月。使用标准数学运算,而不是循环: int count = 84; int years = c

例如,我有一个整数月份84,我需要计算出它等于多少年,用84=7年

我需要循环查看初始数字,看看有多少完整的年份,然后打印结果

例如:

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

当然,这不起作用,它产生了“84年”,而我应该产生7年。我还需要得到年份计算后的剩余月份,因此,如果初始数字为85,则结果为7年1个月。

使用标准数学运算,而不是循环:

int count = 84;
int years = count / 12;
int months = count % 12;
第一个是,第二个是

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

更新

循环版本可能如下所示:

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

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

int count = 84;
int years = (int)(count / 12);
int months = count % 12;
试试这个:

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

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

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

int years = 0;
while (count >= 12) {
  count -= 12;
  years++;
}
但是,您可以在不循环的情况下执行相同的操作:

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

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

我终于让它像这样工作了

 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;

84 / 12 = 7? 你根本不需要一个循环为什么不直接分割呢?84/12=7。为什么需要一个循环来执行此操作?84/12有什么问题!?这就是你说你在现实生活中永远不需要的数学将派上用场的地方在给出这样的答案并贬低我的问题之前,请阅读全文,“年”只是我问题的一部分,我有几个月的时间,我需要转换成年和剩余的几个月——虽然我可能做错了,但这是我选择的方式,这样的评论不会帮助我提高编程技能,你可以使用for循环。整数年=0;整数个月=84;总月数>=12;totalMonths-=12{years++;}@Romoku:是的,但是对于不太熟悉循环的人来说,循环可能更难理解。此外,您还需要在循环外声明totalMonths,否则无法到达剩余月份。不管MSDN怎么说,%运算符是余数运算符,而不是模数运算符。当涉及负数时,余数和模数是不同的。循环版本给出的是部分年份而不是完整年份,例如,对于计数=73,它给出7年。你可以从12开始,而不是从1开始。谢谢@MarcinJuraszek,我通过创建一个包含两个计数的循环来解决这个问题-int employmentInMonthsAmount=this.Months;var intcounter=0;整数年=0;对于var i=0;i<就业月数金额;i++{if intcounter>=12{years++;intcounter=0;}intcounter++;}var monthslight=intcounter;
 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;