这对函数floor()/ ceil()和min()/ max()之间有什么区别?

时间:2012-03-15 17:26:09

标签: max min floor ceil ceiling

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

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

有些语言都有。我认为JavaScript就是一个例子。

我对前一对和后一对之间的区别总是有点模糊。我有一种模糊的印象,min / max更简单,floor / ceiling更具数学性,但这种情况并不多。

奇怪的是,我无法通过搜索Google在StackOverflow或互联网上的任何地方找到这个。 当您的编程语言提供这些功能时,是否有一些最佳实践或经验法则来决定使用哪些功能?

7 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:10)

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

答案 2 :(得分:7)

SQL> help btitle

BTITLE
------

Places and formats a specified title at the bottom of each report
page, or lists the current BTITLE definition.

BTI[TLE] [printspec [text|variable] ...] | [OFF|ON]

where printspec represents one or more of the following clauses:

     COL n          LE[FT]        BOLD
     S[KIP] [n]     CE[NTER]      FORMAT text
     TAB n          R[IGHT]


SQL>

SQL> show btitle
btitle OFF and is the first few characters of the next SELECT statement
SQL> btitle tab 239 test
SQL> sho btitle
btitle ON and is the following 18 characters:
tab 239 test
SQL> btitle tab 240 test
SQL> sho btitle
btitle ON and is the following 18 characters:
tab 240 test
SQL> btitle tab 241 test
Invalid COL or TAB position entered
SQL>

关于定义:

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的最小整数。

答案 3 :(得分:3)

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

min(3, 5);返回3.

floor()ceiling()将双精度截断为整数,如

floor(5.3);返回5.

答案 4 :(得分: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)

答案 5 :(得分:3)

我意识到这篇文章很老,但是一个重要的区别被忽略了。

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

如果处理正数和负数,这很重要。即。

for cpPtr in cpdomains:  
            domainKeys = self.domainSplitter(cpPtr.split(" ")[1])  
                for domainKey in domainKeys:  
                    if domainKey in domainAggregator.keys():  
                        domainAggregator[domainKey] = 
                         int(domainAggregator[domainKey]) + int(cpPtr.split(" ")[0])  
                    else:  
                        domainAggregator[domainKey] = int(cpPtr.split(" ")[0])  

答案 6 :(得分:2)

在Java语言中:

  • 地板将数字向下舍入到最接近的整数。
  • 天花板将数字向上舍入到最接近的整数。
  • 舍入将数字四舍五入到最接近的整数。

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>