trunc()、ceiling()、floor()、round()函数在R语言中都是取整,但是用法上有一定的区别。
函数 | 用法 |
---|---|
trunc() | 去除小数部分 |
ceiling() | 向上取整 |
floor() | 向下取整 |
round() | 一般情况下四舍五入,但会受浮点数影响 |
trunc()
简单粗暴,无论正数还是负数,都是一刀切,分离出整数:
> trunc(1.4)
[1] 1
> trunc(-1.4)
[1] -1
ceiling()
和英文单词意思可以结合起来理解,ceiling是天花板的意思,所以向上取整,这个上指的是取比它大的整数:
> ceiling(1.4)
[1] 2
> ceiling(-1.4)
[1] -1
floor()
同理ceiling(),它则是向下取整比它小的数
> floor(1.4)
[1] 1
> floor(-1.4)
[1] -2
round()
round()函数在一般情况下是四舍五入,也就是根据小数位结合符号来决定向上还是向下取整:
> round(1.6)
[1] 2
> round(-1.6)
[1] -2
但是因为计算机内部计算时,会受到浮点数的干扰,所以有时候在.5
时会出现问题:
> round(4.5)
[1] 4
> round(-0.5)
[1] 0
因此在有出现.5的情况并且需要用到round时,建议加上一个很小的数字(比如0.0001)来确保不会出现bug,同时也不会多进一位
> round(0.5)
[1] 0
> round(0.5+0.0001)
[1] 1