В чем разница между парой функций floor()/ceil() и min()/max()?

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

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

и некоторые языки имеют оба. JavaScript, я считаю, является одним из примеров.

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

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

7 ответов


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


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

min(1, 2, 3, 4) => 1
max(1, 2, 3, 4) => 4
floor(3.5) => 3
ceiling(3.5) => 4

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.


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

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

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

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


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

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)

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

функция 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

В Javascript:

  • пол округление числа вниз до ближайшего целого числа.
  • Ceil округлить число вверх до ближайшего целого числа.
  • круглые округление числа до ближайшего целого числа.

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>