ニッチな機能あります。FileMaker数字関数(前編)

こんにちは。スタッフの今井です。
先月のFileMaker勉強会はインフルエンザでお休みしてしまったため久々のブログ更新です。

今回のFileMaker勉強会では、FileMakerで使える数字関数について勉強したことを発表しました。
ただ、数字関数はちょっと種類が多かったので、今回は「(前編)」と題しまして数字関数の一部について扱っていこうと思います。

数字関数(前編)では、以下の関数について説明しています。

Abs関数

Abs関数は数値の絶対値を返します。

引数

  • 数値…任意の数式または数式を含むフィールド

戻り値のデータタイプ

  • 数字
  • 時刻

Abs関数の使用例

「Abs(-123)」は「123」を返します。
「Abs(456)」は「456」を返します。

Abs関数を使ってみた感想

読み方は、「ヱビス」でも「アビス」でもなく「アブソルート」。
関数を使わずに絶対値の計算をしようとすると、「もし数値が0より小さかったら、-1をかける」と少し手間のかかる処理をしないといけないですよね。
しかし、Abs関数を知っていれば、( )の中に数値を入れるだけで絶対値を返してくれるので便利ですよね。
また、2つのフィールド(「目標日」と「実行日」など)の差を計算する際に「Abs(目標日 – 実行日)」などとするとフィールドの差が必ず正の数になります。

Sign関数

Sign関数は指定された数値が正か負かを判別し返します。

引数

  • 数値…任意の数式または数式を含むフィールド

戻り値のデータタイプ

  • 数字

Sign関数の説明

  • 指定された数値がの場合は「-1」を返します。
  • 指定された数値がゼロの場合は「0」を返します。
  • 指定された数値がの場合は「1」を返します。

Sign関数の使用例

「Sign(15.12)」は「1」を返します。
「Sign(-175)」は「-1」を返します。

Ceiling関数

Ceiling関数は次の整数に切り上げた数値を返します。

引数

  • 数値…任意の数式または数式を含むフィールド

戻り値のデータタイプ

  • 数字

Ceiling関数の使用例

「Ceiling(1.25)」は「2」を返します。
「Ceiling(-1.25)」は「-1」を返します。

Ceiling関数を使ってみた感想

「Ceiling」は天井の意味だそうです。関数の勉強をしていると自然と英語の勉強にもなりますよね。

Floor関数

Floor関数は次に小さい整数に切り捨てられた数値を返します。

引数

  • 数値…任意の数式または数式を含むフィールド

戻り値のデータタイプ

  • 数字

Floor関数の使用例

「Floor(1.25)」は「1」を返します。
「Floor(-1.25)」は「-2」を返します。

Floor関数を使ってみた感想

Ceiling関数と対をなすFloor関数。「Floor」の意味は床なので名前も対になっています。
関数の種類が多いと機能と名前がごっちゃになりがちですが(私だけかもですが)、
名前の意味も一緒に覚えると頭の中にインプットされやすくなります。

Div関数

Div関数は数値を除数で除算した後、次に小さい整数値を返します。

引数

  • 数値…任意の数式または数式を含むフィールド
  • 除数…任意の数値式、または数値式を含むフィールド

戻り値のデータタイプ

  • 数字

Div関数の説明

Div( 数値 ; 除数 ) = Floor( 数値 / 除数 ) です。
また、除数が「0」の場合、「?」が返ってきますのでご注意ください。

Div関数の使用例

「Div(2.5 ; 2)」は「1」を返します。
「Div(-2.5 ; 2)」は「-2」を返します。

Truncate関数

Truncate関数は指定された少数点以下の桁数になるように切り捨てられた数値を返します。

引数

  • 数値…任意の数式または数式を含むフィールド
  • 桁数…任意の数値式、または数値式を含むフィールド

戻り値のデータタイプ

  • 数字

Truncate関数の使用例

「Truncate(123.456 ; 2)」は「123.45」を返します。
「Truncate(-14.6 ; 0)」は「-14」を返します。
「Truncate(29343.98 ; -3)」は「29000」を返します。
「Truncate(29343.98 ; 5)」は「29343.98」を返します。

Truncate関数を使ってみた感想

桁数に負の数を指定できるのがいいですね。使い道が多い関数だと思います。

Round関数

Round関数は数値を、指定した少数点以下の桁数に四捨五入して返します。

引数

  • 数値…任意の数式または数式を含むフィールド
  • 桁数…任意の数値式、または数値式を含むフィールド

戻り値のデータタイプ

  • 数字

Round関数の使用例

「Round(123.456 ; 2)」は「123.46」を返します。
「Round(14.5 ; 0)」は「15」を返します。
「Round(29343.98 ; -3)」は「29000」を返します。
「Round(123.456 ; -1)」は「120」を返します。

Round関数を使ってみた感想

Truncate関数と同じく、桁数に負の数を指定できます。

Int関数

Int関数は四捨五入せずに、指定した数値の小数点以下の桁を無視した整数部分を返します。

引数

  • 数値…任意の数式または数式を含むフィールド

戻り値のデータタイプ

  • 数字

Int関数の使用例

「Int(1.45)」は「1」を返します。
「Int(-3.9)」は「-3」を返します。
「Int(123.9)」は「123」を返します。
「Int(13 / 3)」は「4」を返します。

Factorial関数

Factorial関数は1またはオプションの係数数で指定された数値で終了する数値の階乗を返します。

引数

  • 数値…数値式または正の整数を含むフィールド
  • 係数数…任意の数値式、または乗算に含める係数の数を示す数式を含むフィールド
    (係数数はオプションです。指定しない場合は1が入ります)

戻り値のデータタイプ

  • 数字

Factorial関数の説明

数値 = n,係数数 = iとするとFactorial関数は以下のようになります。

  • Factorial(n) = n(n – 1)(n – 2)…(1)
  • Factorial(n ; i) = n(n – 1)(n – 2)…(n – i + 1)

また、数値や係数数が負の数の場合や、係数数の値が数値より大きい数の場合は「?」が返ってきますのでご注意ください。

Factorial関数の使用例

「Factorial(3)」は「=3*2*1」である「6」を返します。
「Factorial(10 ; 3)」は「=10*9*8」である「720」を返します。

Factorial関数を使ってみた感想

組み合わせ数学でいうところのPです。
例えば、5人(A, B, C, D, E)の生徒の中から委員長と副委員長を決める時、何通りの組み合わせがあるかなどに使われます。
ちなみにこの場合は(委員長, 副委員長)とすると(Factorial(5 ; 2))、
(A, B)(A, C)(A, D)(A, E)
(B, A)(B, C)(B, D)(B, E)
(C, A)(C, B)(C, D)(C, E)
(D, A)(D, B)(D, C)(D, E)
(E, A)(E, B)(E, C)(E, D)
となり、20通りになります。

Combination関数

Combination関数は設定サイズのサイズの集合から選択肢の数の項目を固有に選択する方法が何通りあるかを数字で返します。

引数

  • 設定サイズ…任意の数値式、または負でない数値式を含むフィールド
  • 選択肢の数…任意の数値式、または負でない数値式を含むフィールド

戻り値のデータタイプ

  • 数字

Combination関数の説明

Combination(設定サイズ ; 選択肢の数) = Factorial(設定サイズ ; 選択肢の数) / Factorial(選択肢の数) です。
また、設定サイズや選択肢の数が負の数の場合や、選択肢の数が設定サイズより大きい数の場合は「?」が返ってきますのでご注意ください。

Combination関数の使用例

「Combination(5 ; 2)」は「10」を返します。
「Combination(5 ; 3)」は「10」を返します。

Combination関数を使ってみた感想

組み合わせ数学でいうところのCです。
例えば、5人(A, B, C, D, E)の生徒の中からクラス委員を2名決める時、何通りの組み合わせがあるかなどに使われます。
ちなみにこの場合は(Combination(5 ; 2))、
(A, B)(A, C)(A, D)(A, E)
(B, C)(B, D)(B, E)
(C, D)(C, E)
(D, E)
となり、10通りになります。

最後に

これで、3月のFileMaker勉強会の発表内容は終わりです。
数字関数はまだまだ種類があります。
今回は数字関数まとめ(前編)だったので、もし機会があればまた違う数字関数をまとめた(後編)の発表もできればいいなと思います。