-6

私はintか月(たとえば84)を持っており、84=7年を使用して等しい年数を計算する必要があります

最初の数値をループして、そこに何年あるかを確認し、結果を印刷する必要があります

例:

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

もちろん、これは機能しません。7年を生成する必要がある「84年」を生成します。また、年の計算後の残りの月を取得する必要があるため、たとえば初期数が85の場合、7年1か月になります。

4

6 に答える 6

7

ループの代わりに標準の数学演算を使用します。

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

1つ目は除算、2つ目はモジュラスです。

countとは両方とも12整数であるためcount/12、整数も返します。したがって、ではなく、85が返されます。77.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 に答える