我正在使用formatC
来确保一堆数字全部打印到相同的长度。有些数字比所需的长度短,并用0填充,有些数字更长并且被截断。问题是最后一位数formatC
轮。
这很好
> formatC(1, digits = 5, format = 'f')
[1] "1.00000"
我不喜欢舍入,我宁愿在第n位截断它而不用舍入。
> formatC(1.234567, digits = 5, format = 'f')
[1] "1.23457"
有没有办法在没有舍入R的情况下截断数字?我知道有可能首先转换为角色,然后抓住它的某个子串,但这感觉很笨重。
答案 0 :(得分:2)
它有点笨拙,但你可以使用trunc
稍加一点:
trunc(1.234567 * 1e5) / 1e5
# [1] 1.23456
功能化:
trunc2 = function(x, d) trunc(x * 10 ^ d) / 10 ^ d
然后你可以
formatC(trunc2(1.234567, 5), digits = 5, format = 'f')
# [1] "1.23456"