小数点以下を削除するINT関数については、本連載「Excelで時短」においてたびたび触れてきた。このINT関数と同様、小数点以下を削除できる関数が他にもある。TRUNC関数それにROUNDDOWN関数がそれだ。今回はこれらの関数の微妙な違いについて考えてみたい。
=INT(数値)
数値 小数を切り捨てて整数にする実数を指定する。
似て非なるINTとTRUNC
まずは、TRUNC関数とROUNDDOWN関数の構造と引数について触れておく。TRUNC関数、ROUNDDOWN関数はいずれも、「数値」と「桁数」の2つの引数を持つ。
=TRUNC(数値、桁数)
数値の小数部分を切り捨てて、整数または指定した桁数に変換する。
①数値 小数部を切り捨てする値を指定する。②桁数 省略可能。切り捨てを行った後の桁数を指定する。桁数の規定値は「0」になる。
=ROUNDDOWN(数値、桁数)
数値を指定した桁数で切り捨てる。
①数値 切り捨ての対象となる数値を指定する。②桁数 切り捨てを行った後の桁数を指定する。
これら3つの関数にどのような違いがあるのか、ともあれ下図を見てもらいたい。それぞれの関数を用いて「123.456」と「-123.456」の小数点以下を切り捨ててみた。
数式はB2が「=INT(B1)」、B3が「=TRUNC(B1)」、B4が「=ROUNDDOWN(B1,0)」になっている。TRUNC関数は「桁数」を省略すると小数点以下が自動的に切り捨てられる。
結果、「123.456」については、3つの関数とも「123」になった。注目したいのは、「-123.456」の小数点以下を処理した箇所だ。INT関数が「-124」、TRUNC関数とROUNDDOWN関数が「-123」になった。微妙な違いとは、値がマイナス時の扱いに他ならない。
INT関数の振る舞いを再度確認すると、こちらは「指定した数値を超えない最大の整数を返す」というものだ。マイナスの場合、「-123」と「-124」で大きいのは「-123」のほうだ。そのため「-123.456」について小数点以下を切り捨てて、元の数値を超えない最大の整数は「-124」になる。「-123」では、元の数値を超えてしまうからだ。そのためINT関数の場合、小数点以下の切り捨てではなく、「元の値を超えない整数への丸め」と表現したほうが適切になる。