切り捨て


 intを使います。また、POSIXfloorというのが用意されています。intとfloorの違いは対象が負の値の時の動きで、intは絶対値が小さくなる方向に、floorは値が小さくなる方向に値を変更します。
 小数点以下を切り捨てる場合にはそのままintを使い、小数点以下n桁を残して切り捨てる場合には10のn乗をかけてからintを使い10のn乗で割ります。
 対象が負数の場合にはいきなりintを使うと切り上げになってしまうので、-1してからintを使います(あるいはPOSIX::floorを使います)。
use POSIX qw(floor);

$foo = int(-10.5);   # -10
$bar = floor(-10.5); # -11
# 自作関数
$hoge = trunc(198.25, 0);	# $hoge = 198
$fuga = trunc(198.25, 1);	# $fuga = 198.2
$piyo = trunc(198.25, -1);	# $piyo = 190
$minus = trunc(-198.25, 1);	# $minus = -198.3

sub trunc {
	my $val = shift;	# 切り捨てる数
	my $col = shift;	# 小数点以下のどこまで残すか
	my $r = 10 ** $col;
	if ($val > 0) {
		return int($val * $r) / $r;
	} else {
		my $tmp = $val * $r;
		if ($tmp == int($tmp)) {
			return $tmp / $r;
		} else {
			return int($tmp - 1) / $r;
		}
	}
}

関連項目

int関数
切り上げ
四捨五入