Можно ли сделать так, чтобы этот код отображал 42 года в часах (включая високосные)? - PullRequest
1 голос
/ 06 мая 2020
age=42;
days +=(age/4);//leap years
var days= age*365;
var hours= days*24;
var age;
console.log(hours);

Этот код был предоставлен мне mimo на одном из уроков, но я не могу решить эту проблему. Не могли бы вы помочь мне решить это неудобство?

Ответы [ 5 ]

0 голосов
/ 03 июля 2020

42 * 8766 = 368172

готово.

нет javascript не требуется.

0 голосов
/ 03 июля 2020

Мне тоже пришлось нелегко с этим. Тем не менее, это также моя вина, что я прыгнул в проект «Создание веб-сайта», не изучив сначала Javascript.

Ответ на это:

var age;
age = 42;
var days = age * 365;
days += (age / 4); *// Leap years
var hours = days * 24;
console.log(hours);
0 голосов
/ 06 мая 2020

Основная проблема состоит в том, что вы должны знать, какие годы это было на самом деле.

Каждые 4 года високосный год. У вас есть число 42, которое мы можем записать как 10 * 4 + 2, потому что нас интересует период в 4 года. Чтобы обобщить это, его в основном x * 4 + 2 и простой пример, чтобы представить, как это работает, когда x = 1.

Итак, ваш пример почти такой же, как для 6-летнего периода. И мы можем легко найти два примера с разной почасовой ставкой в ​​зависимости от високосного года.

2010 - 2016 will have two leap years (2010 and 2014).
2007 - 2013 will have only one leap year (2010)

Итак, чтобы найти правильное число, вам нужно получить год начала, и вы должны циклически пройти через следующие 42 года. Каждый раз, когда год умножается на 4, вы добавляете 1 дополнительный день. Но имейте в виду, что в случае 100 лет (т.е. двадцать лет из go у нас было 2000) это правило не используется и такое же, как и другие годы.

0 голосов
/ 06 мая 2020

Если я не ошибаюсь, и вы хотите рассчитать только годовые часы (и нет определенных c границ для лет, таких как 2000-2042), вы можете сделать следующее для любого случайного года.

Поскольку каждый год имеет 365 дней , а каждый день 24 часа , вы можете просто рассчитать часы каждого года следующим образом: year * 365 * 24. Но чтобы рассчитать и високосные годы, поскольку високосных лет случаются каждые 4 года , вам следует разделить желаемый год на 4 (чтобы проверить, сколько високосных лет существует в нем) и вычислите его нижний предел, тогда числовым значением будет количество дополнительных дней, которые у вас есть, поэтому вы должны рассчитать их индивидуально и суммировать их с указанным годом. Таким образом, окончательный результат должен быть примерно таким year * 365 * 24 + additionalDaysDueToLeapYears * 24.

Ваш код должен выглядеть примерно так:

function yearToHour(year) {
  const leapYears = Math.floor(year / 4);
  return year * 365 * 24 + leapYears * 24;
}

console.log(yearToHour(42));
0 голосов
/ 06 мая 2020

Вы можете учесть високосные годы, умножив на 365.25.

Посмотрите этот фрагмент кода:

function ageInHours(years) {
   return years * 365.25 * 24;
}

console.log(ageInHours(42));
...