Рассчитать минуты за определенный период

Из того, что я вижу из консоли JavaScript в Chrome, Math.random() генерирует число от 0 до 0.9999999999999999. Принимая это во внимание, вы можете получить то, что хотите, добавив модификатор. Например, вот функция, которая даст вам квази-случайное поплавок между 0 и 1, при этом 1 включительно:

function randFloat() {
  // Assume random() returns 0 up to 0.9999999999999999
  return Math.random()*(1+2.5e-16);
}

Вы можете попробовать это в консоли, нажав 0.9999999999999999*(1+2.5e-16) - он будет верните ровно 1. Вы можете принять это дальше и вернуть поплавок между 0 и 1024 (включительно) с помощью этой функции:

function randFloat(nMax) {
  // Assume random() returns 0 up to 0.9999999999999999
  // nMax should be a float in the range 1-1024
  var nMod;
  if (nMax<4) nMod = 2.5e-16;
  else if (nMax<16) nMod = 1e-15;
  else if (nMax<32) nMod = 3.5e-15;
  else if (nMax<128) nMod = 1e-14;
  else if (nMax<512) nMod = 3.5e-14;
  else if (nMax<1024) nMod = 1e-13;
  return Math.random()*(nMax+nMod);
}

Вероятно, есть более эффективный алгоритм.

0
задан user2843365 18 January 2019 в 13:14
поделиться

2 ответа

В приведенном ниже примере я использовал: =MAX(0,MIN($O$2,H2)-MAX($O$1,G2)) и отформатирован как [мм].

enter image description here

0
ответ дан JvdV 18 January 2019 в 13:14
поделиться

В Excel единицами являются дни, поэтому, если вы хотите рассчитать количество минут между двумя временными метками, вам нужно вычесть обе и умножить разницу на 24*60 (это количество минут за один день). [116 ]

например. Вы начинаете работать в 09:07 (ячейка B2) и заканчиваете в 18:07 (ячейка B3), имея 45-минутный перерыв. Тогда время, которое вы проработали в минутах:

=(B3-B2)*24*60-45

Убедитесь, что форматирование ячейки правильное (общее), вы получите: 495.

0
ответ дан Dominique 18 January 2019 в 13:14
поделиться
Другие вопросы по тегам:

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