-6

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

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

例子:

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

这当然行不通,它会产生“84 年”,而我应该产生 7 年。我还需要在年份计算后获取剩余的月份,因此如果初始数字为 85,例如,它将导致 7 年 1 个月。

4

6 回答 6

7

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

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

第一个是除法,第二个是模数

因为两者count12都是整数也count/12返回一个整数。所以对于85它会返回7,不是7.1

更新

循环版本可能如下所示:

count = 84;
years = 0;
for (int i = 12; i <= count; i += 12)
{
    years++;
}
于 2013-03-26T16:53:48.870 回答
5

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

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

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

int years = count / 12;
count %= 12;
于 2013-03-26T16:54:50.230 回答
1

尝试这个:

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

int year = t.Year;    // year = 8
int month = t.Month;  // month = 1
于 2013-03-26T16:54:08.023 回答
0

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

int count = 84;
int years = (int)(count / 12);
int months = count % 12;
于 2013-03-26T16:53:51.583 回答
0
int years = count / 12;
int remainingMonths = count % 12;
于 2013-03-26T16:54:22.830 回答
0

感谢所有给出答案的人: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;
于 2013-03-27T14:06:31.577 回答