这个问题在这里已经有了答案:
Truncate decimal to specified places
(3 个回答)
6年前关闭。
非常基本,但谷歌搜索没有产生答案。有没有办法在不四舍五入的情况下截断数值?
例如:
vars <- c(23.4567, 45.6795, 34.5670)
我希望输出简单地去掉最后两个有效数字,而不是四舍五入。我想要的是:
vars <- c(23.45, 45.67, 34.56)
但最常见的方法是四舍五入(当然,圆形,但也意味着:
round(vars, 2)
[1] 23.46 45.68 34.57
signif(vars, digits=4)
[1] 23.46 45.68 34.57
如果这里已经解决了这个问题,请指出我正确的方向,但找不到它特定于 R...
最佳答案
你可以试试 floor()
vars <- floor(vars*100)/100
但是,此解决方案假定所有值都是正数,如
floor()
舍入到下一个较小的整数。如果有负数,这种方法可能会产生不良结果:> floor(-23.441*100)/100
#[1] -23.45
因此,更通用的解决方案是使用
trunc()
:vars <- trunc(vars*100)/100
这将删除前两位小数后的任何数字,它也适用于负数:
> trunc(-23.441*100)/100
#[1] -23.44
关于r - 在 R 中截断但不舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31965975/