[R]小数点以下の切り捨てを行う
trunc関数を使う。引数に与えた数値の小数点以下を、強制的に切り捨てていると考えればよい。
> d <- c(0.4, 0.5, 0.6, 1.4, 1.5, 1.6)
> for (i in 1:length(d))
+ cat(sprintf("%f -> %f\n", d[i], trunc(d[i])))
0.400000 -> 0.000000
0.500000 -> 0.000000
0.600000 -> 0.000000
1.400000 -> 1.000000
1.500000 -> 1.000000
1.600000 -> 1.000000
> d <- c(-0.4, -0.5, -0.6, -1.4, -1.5, -1.6)
> for (i in 1:length(d))
+ cat(sprintf("%f -> %f\n", d[i], trunc(d[i])))
-0.400000 -> -0.000000
-0.500000 -> -0.000000
-0.600000 -> -0.000000
-1.400000 -> -1.000000
-1.500000 -> -1.000000
-1.600000 -> -1.000000
似たような機能を持つfloor関数もあるが、こちらは小数点以下を強制的に切り捨てているのではなく、引数に与えた数値を超えない最大の整数を返すことに注意。つまり、負数の場合はtrunc関数とfloor関数では動作が異なる。
> d <- c(0.4, 0.5, 0.6, 1.4, 1.5, 1.6)
> for (i in 1:length(d))
+ cat(sprintf("%f -> %f\n", d[i], floor(d[i])))
0.400000 -> 0.000000
0.500000 -> 0.000000
0.600000 -> 0.000000
1.400000 -> 1.000000
1.500000 -> 1.000000
1.600000 -> 1.000000
> d <- c(-0.4, -0.5, -0.6, -1.4, -1.5, -1.6)
> for (i in 1:length(d))
+ cat(sprintf("%f -> %f\n", d[i], floor(d[i])))
-0.400000 -> -1.000000
-0.500000 -> -1.000000
-0.600000 -> -1.000000
-1.400000 -> -2.000000
-1.500000 -> -2.000000
-1.600000 -> -2.000000
