14

我会说所有编程语言都有具有这些名称的函数来选择两个值中的较小者或较大者:

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

有些语言两者兼而有之。我相信 JavaScript 就是一个例子。

我一直对前一对和后一对之间的区别有点模糊。我有一个模糊的印象,即min/max更简单和floor/ceiling更数学化,但这并没有什么可继续的。

奇怪的是,我在 StackOverflow 或互联网上的任何地方都找不到讨论的内容,通常通过搜索谷歌。那么,当您的编程语言同时提供这两种功能时,是否有一些最佳实践或经验法则来决定使用哪些功能?

4

8 回答 8

16

这是苹果与橙子。在大多数语言/API 中,min/max接受两个(或更多)输入,并返回最小/最大的。 floor/ceil取一个参数,并将其向下或向上舍入到最接近的整数。

于 2012-03-15T17:27:37.490 回答
14

据我所知max,并min用于集合,比如一组数字。Floorceiling用于单个数字。例如:

min(1, 2, 3, 4) => 1
max(1, 2, 3, 4) => 4
floor(3.5) => 3
ceiling(3.5) => 4
于 2012-03-15T17:27:43.987 回答
11
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

于 2015-07-24T04:36:23.650 回答
7

在 Javascript 中:

  • Floor将数字向下舍入到最接近的整数。
  • 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>

于 2018-09-13T13:05:05.023 回答
6

我意识到这篇文章已经过时了,但是一个重要的区别被忽略了。

函数 round() 朝零或远离零舍入,而函数 ceil() 和 floor() 朝正无穷和负无穷舍入;

如果同时处理正数和负数,这一点很重要。IE

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
于 2018-04-04T01:19:37.617 回答
3

min()max()返回 2 个值中较小或较大的值,有些可能会超过 2 个值,如

min(3, 5);返回 3。

floor()并将ceiling()double 截断为整数,如

floor(5.3);返回 5。

于 2012-03-15T17:29:35.087 回答
3

不确定我是否理解您的问题,例如:

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)
于 2012-03-15T17:29:36.210 回答
-1

请考虑以下 JavaScript 中 Math.floor()、Math.round() 和 Math.ceil() 之间的区别:

1- Math.floor(x)/if x=0.99 转换为 = x=0/(返回 x 向下舍入到最接近的整数)

2- Math.ceil(x)/if x<0.1 转换为 x=1/(返回 x 向上舍入到最接近的整数)

3-1 - Mathh.round(x)/ 如果 x<0.5 转换为 x=0/
3-2- Mathh.round(x) / 如果 0.5<=x<1 转换为 x=1/
(返回 x 舍入到最接近的整数)

于 2022-02-23T12:26:02.307 回答