int

整数部分を取得する

構文

解説

EXPR の整数部分を取り出します。引数を指定しなければ、$_ が適用されます。

print int 3.14;      # 3
print int 10.9;      # 10
print int '10.9';    # 10 (文字列でも機能します)

int はあくまでも引数の整数部を取り出すだけであり、 四捨五入や小数点以下切り捨てを正確に計算するわけではありませんので注意してください。

たとえば、int(-6.725/0.025) を考えてみましょう。 -6.725/0.025 は -269 です。 浮動小数点数を浮動小数点数で除算すると考えると複雑に感じますが、 -(6725 / 1000) / (25 / 1000) = -(6725 / 1000) * (1000 / 25) = -(6725 * 1000) / (1000 * 25) = -6725 / 25 = -269 という具合に人力で簡単に計算できます。

しかし、コンピューターでこれを計算してしまうと -268.99999999999994315658 という結果になります。 そのため、int(-6.725/0.025) の結果は -269 ではなく -268 となってしまいます。

print int( -6.725 / 0.025 );    # -268

このように、浮動小数点数を使った計算結果を int に与えるのは避けた方が良いでしょう。

もし正確に小数点以下を切り捨てる算術処理をしたいなら、POSIX::floor を使うと良いでしょう。

use POSIX;
print int( POSIX::floor( -6.725 / 0.025 ) ); # -269