四捨五入
Math::Roundモジュールを使うと簡単です。
モジュールを使わない場合は、0.5を足してからintを使います。
小数点以下を四捨五入する場合にはそのままintを使い、小数点以下n桁を残して四捨五入する場合には10のn乗をかけてからintを使い10のn乗で割ります。
# 四捨五入 use strict; use warnings; use Math::Round; print round(-198.25), "\n"; # -198 print round(198.25), "\n"; # 198 print round(198.75), "\n"; # 199
# 指定の桁で四捨五入 use strict; use warnings; use Math::Round; print nearest(1, 198.25), "\n"; # 198 print nearest(0.1, 198.25), "\n"; # 198.3 print nearest(10, 198.25), "\n"; # 200 print nearest(0.1, -198.25), "\n"; # -198.3
# 四捨五入 use strict; use warnings; my $foo = 13.6; print int($foo + 0.5), "\n"; # 14
# 指定の桁で四捨五入 use strict; use warnings; print round(198.25, 0), "\n"; # 198 print round(198.25, 1), "\n"; # 198.3 print round(198.25, -1), "\n"; # 200 print round(-198.25, 1), "\n"; # -198.3 sub round { my $val = shift; # 四捨五入する数 my $col = shift; # 小数点以下のどこまで残すか my $r = 10 ** $col; my $a = ($val > 0) ? 0.5 : -0.5; return int($val * $r + $a) / $r; }
関連項目
・int関数・切り捨て
・切り上げ