Вычисление високосного года

Для нахождения високосных годов, почему год должен быть неделимым 100 и делимым 400?

Я понимаю, почему это должно быть делимым 4. Объясните алгоритм.

46
задан Dale K 4 October 2019 в 11:01
поделиться

8 ответов

Продолжительность года является (более или менее) 365,242196 днями. Таким образом, мы должны вычесть, более или менее, четверть дня, чтобы заставить его соответствовать:

365.242196 - 0.25 = 364.992196 (путем добавления 1 дня за 4 года): но ой, теперь это является слишком маленьким!! позволяет добавляет hundreth дня (не добавляя в тот день однажды в сталетнем :-))

364.992196 + 0,01 = 365.002196 (ой, немного слишком большой, давайте добавим в тот день так или иначе одно время приблизительно за 400 лет),

365.002196 - 1/400 = 364.999696

Почти там теперь, просто играйте с leapseconds время от времени, и Вы установлены.

(Примечание: причина больше исправлений не применяется после этого шага, состоит в том, потому что год также ИЗМЕНЯЕТСЯ В ДЛИНЕ!!, вот почему leapseconds являются наиболее гибким решением, видят examlple здесь),

Вот почему я предполагаю

102
ответ дан Peter 26 November 2019 в 19:58
поделиться

Существуют в среднем, примерно 365,2425 дней через год в данный момент (Земля замедляется, но давайте проигнорируем это на данный момент).

Причина у нас есть високосные годы каждые 4 года, состоит в том, потому что это получает нас к 365,25 в среднем [(365+365+365+366) / 4 = 365.25, 1461 days in 4 years].

Причина у нас нет високосных годов на 100 кратных числах, состоит в том, чтобы получить нас к 365,24' [(1461 x 25 - 1) / 100 = 365.24, 36 524 дня через 100 лет.

Затем причина, у нас еще раз есть високосный год на 400 кратных числах, состоит в том, чтобы получить нас к 365,2425 [(36,524 x 4 + 1) / 400 = 365.2425, 146,097 days in 400 years].

Я полагаю, что может быть другое правило в 3600 кратных числах, но я никогда не кодировал для него (двухтысячный год был одной вещью, но планирующий в течение полутора тысяч лет в будущее не необходимо, по-моему - имеют в виду, что я был неправ прежде).

Так, правила в уменьшающемся приоритете:

  • несколько из 400 являются високосным годом.
  • несколько из 100 не являются високосным годом.
  • несколько из 4 являются високосным годом.
  • что-либо еще не високосный год.
0
ответ дан paxdiablo 26 November 2019 в 19:58
поделиться

Високосные годы произвольны, и система, используемая для описания их, является человеком, сделанным конструкцией. Существует не почему.

То, что я имею в виду, возможно, был високосный год каждые 28 лет, и у нас будет дополнительная неделя в те високосные годы..., но власть имущие решили сделать это днем каждые 4 года для наверстывания.

Это также имеет отношение к земле, берущей противные 365.25 дни для вращений вокруг солнца и т.д. Конечно, это не действительно 365.25, это немного меньше (365.242222...), так для исправления для этого несоответствия, они решили отбрасывание високосные годы, которые являются делимыми 100.

0
ответ дан inspite 26 November 2019 в 19:58
поделиться

Если Вы интересуетесь причинами этих правил, это - потому что время, это берет землю для создания точно одной орбиты вокруг солнца, является долгим неточным десятичным значением. Это не точно 365.25. Это - немного меньше чем 365,25, поэтому каждые 100 лет, один день прыжка должен быть устранен (365.25 - 0.01 = 365.24). Но это не точно корректно также. Значение немного больше, чем 365,24. Таким образом, только 3 из 4 раз будут 100-летнее правило применяться (или другими словами, добавлять назад через 1 день каждые 400 лет; 365.25 - 0.01 + 0.0025 = 365.2425).

0
ответ дан BlueMonkMN 26 November 2019 в 19:58
поделиться

Действительно необходимо попытаться погуглить сначала.

Википедия имеет объяснение високосных годов. Алгоритм Ваше описание для Преждевременного Григорианского календаря.

Больше о математике вокруг этого может быть найден в статье Calendar Algorithms.

2
ответ дан Davy Landman 26 November 2019 в 19:58
поделиться

Я уверен, что Википедия может объяснить это лучше, чем я могу, но это в основном относится к тому, что, если бы Вы добавляли дополнительный день каждые четыре года, мы обогнали бы солнце, поскольку его время для вращений вокруг солнца составляет меньше чем 365,25 дней, таким образом, мы компенсируем это, не добавляя дни прыжка в годы, которые не являются делимыми 400, например, 1900.

Надежда, которая помогает

6
ответ дан chillysapien 26 November 2019 в 19:58
поделиться

В общих чертах алгоритм для вычисления високосного года следующие...

Год будет високосным годом, если это будет делимым 4, но не 100. Если год является делимым 4 и 100, это не високосный год, если это не является также делимым 400.

Таким образом годы, такие как 1996, 1992, 1988 и так далее являются високосными годами, потому что они являются делимыми 4, но не 100. В течение лет века эти 400 правил важны. Таким образом, годы века 1900, 1800 и 1700, в то время как все все еще делимые 4 являются также точно делимыми 100. Поскольку они не дальнейшие делимый 400, они не високосные годы

14
ответ дан Ivan Prodanov 26 November 2019 в 19:58
поделиться

Существует алгоритм на Википедию для определения високосных годов:

function isLeapYear (year):
    if ((year modulo 4 is 0) and (year modulo 100 is not 0))
    or (year modulo 400 is 0)
        then true
    else false

Существует большая информация об этой теме на странице Википедии о високосных годах, содержащая информация о различных календарях.

78
ответ дан Georg Schölly 26 November 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: