В чем разница между парой функций 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>