web-dev-qa-db-ja.com

関数floor()/ ceil()とmin()/ max()のペアの違いは何ですか?

すべてのプログラミング言語には、次の2つの値の小さい方または大きい方を選択するためのこれらの名前の関数があります。

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

そして、いくつかの言語には両方があります。 JavaScriptはその一例だと思います。

前者のペアと後者のペアの違いについて、私はいつも少し曖昧でした。 min/maxはより単純で、floor/ceilingはより数学的な印象を持っていますが、それだけでは十分ではありません。

奇妙なことに、一般的にGoogleを検索しても、StackOverflowやインターネットのどこにもこれについて議論されているものは見つかりません。 プログラミング言語が両方を提供するときに、これらの関数のどちらを使用するかを決定するためのいくつかのベストプラクティスまたは経験則はありますか?

11
hippietrail

これはリンゴ対オレンジです。ほとんどの言語/ APIでは、min/maxは2つ(またはそれ以上)の入力を受け取り、最小/最大を返します。 floor/ceil引数を1つ取り、それを切り捨てるか、最も近い整数に切り上げます。

14

私の知る限り、maxminはコレクションで使用されます。たとえば、数値の配列です。 Floorceilingは単一の数値に使用されます。例えば:

min(1, 2, 3, 4) => 1
max(1, 2, 3, 4) => 4
floor(3.5) => 3
ceiling(3.5) => 4
13
Dean Barnes
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より大きい最小の整数です。

10
Dr Beco

この投稿は古いと思いますが、重要な違いが見落とされています。

関数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
5
Don Mclachlan

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>
3
umarbilal

min()およびmax()は、2つの値のうち小さい方または大きい方を返します。

min(3, 5);は3を返します。

floor()およびceiling()は、次のようにdoubleを整数に切り捨てます。

floor(5.3);は5を返します。

3
twain249

あなたの質問を理解できません。たとえば、次を参照してください。

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
assylias