В чем разница между парой функций floor () / ceil () и min () / max ()? - PullRequest
8 голосов
/ 15 марта 2012

Я бы сказал, что все языки программирования имеют функции с этими именами, чтобы выбрать меньшее или большее из двух значений:

  • min() & max()
  • floor() & ceil() / ceiling()

И в некоторых языках есть и то, и другое. Я считаю, что JavaScript - один из примеров.

Я всегда немного размышлял о разнице между первой парой и второй парой. У меня сложилось смутное впечатление, что min / max более просты, а floor / ceiling более математичны, но это не так уж и много.

Как ни странно, я не могу найти это обсуждаемое где-либо в StackOverflow или в Интернете, как правило, с помощью поиска в Google. Итак, есть ли передовой опыт или практические правила, чтобы решить, какую из этих функций использовать, когда ваш язык программирования предлагает оба?

Ответы [ 7 ]

12 голосов
/ 15 марта 2012

Насколько мне известно, max и min используются в коллекции, скажем, массив чисел.Floor и ceiling используются для одиночных чисел.Например:

min(1, 2, 3, 4) => 1
max(1, 2, 3, 4) => 4
floor(3.5) => 3
ceiling(3.5) => 4
12 голосов
/ 15 марта 2012

Это яблоки против апельсинов. В большинстве языков / API min / max принимают два (или более) ввода и возвращают наименьшее / наибольшее. floor / ceil взять один аргумент и округлить его вниз или до ближайшего целого числа.

7 голосов
/ 24 июля 2015
min(1, 2) == 1
max(1, 2) == 2

floor(3.9) == 3
round(3.9) == 4

ceil(3.1) == 4
round(3.1) == 3

trunc, as in (int)(3.xxx) = 3 (no matter what xxx is)

По определению:

floor - наибольшее целое число, меньшее n.

ceil - наименьшее целое число, большее n.

4 голосов
/ 04 апреля 2018

Я понимаю, что этот пост старый, но важное различие упускается из виду.

Функция round () округляет до нуля или от нуля, а функции ceil () и floor () округляют в сторону положительной бесконечности и отрицательной бесконечности;

Это важно при работе как с положительными, так и с отрицательными числами. т.е.

round(4.900000) = 5.000000
ceil(4.900000) = 5.000000
floor(4.900000) = 4.000000

round(4.100000) = 4.000000
ceil(4.100000) = 5.000000
floor(4.100000) = 4.000000

round(-4.100000) = -4.000000
ceil(-4.100000) = -4.000000
floor(-4.100000) = -5.000000

round(-4.900000) = -5.000000
ceil(-4.900000) = -4.000000
floor(-4.900000) = -5.000000
3 голосов
/ 15 марта 2012

Не уверен, что понимаю ваш вопрос, см. Например:

a = 1.7
b = 2.8

min(a,b) = 1.7 (returns the minimum of a and b)
max(a,b) = 2.8 (returns the maximum of a and b)

floor(a) = 1 (rounds towards 0)
floor(b) = 2 (rounds towards 0)

ceil(a) = 2 (rounds up)
ceil(b) = 3 (rounds up)
3 голосов
/ 15 марта 2012

min() и max() возвращают меньшее или большее из двух значений, некоторые могут иметь более двух значений, как в

min(3, 5); возвращает 3.

floor() и ceiling() усекают двойное число до целого числа, как в

floor(5.3); возвращает 5.

2 голосов
/ 13 сентября 2018

В Javascript:

  • Этаж Округление числа вниз до ближайшего целого числа.ближайшее целое число.
  • Округление Округление числа до ближайшего целого числа.

function ceil() {
    var d = Math.ceil(5.1);

    var x = d + "<br>";
    document.getElementById("ceil").innerHTML = x; 
}

function floor() {
    var d = Math.floor(5.1);

    var x = d + "<br>";
    document.getElementById("floor").innerHTML = x; 
}

function round() {
    var d = Math.round(5.1);

    var x = d + "<br>";
    document.getElementById("round").innerHTML = x; 
}
<!DOCTYPE html>
<html>
<body>

<p>Click the different buttons to understand the concept of Ceil, Floor and Round</p>

<button onclick="ceil()">Ceil 5.1</button>
<p id="ceil"></p>

<button onclick="floor()">Floor 5.1</button>
<p id="floor"></p>

<button onclick="round()">Round 5.1</button>
<p id="round"></p>
</body>
</html>
...