避免使用formatC进行舍入

时间:2017-11-21 17:49:38

标签: r string

我正在使用formatC来确保一堆数字全部打印到相同的长度。有些数字比所需的长度短,并用0填充,有些数字更长并且被截断。问题是最后一位数formatC轮。

这很好

> formatC(1, digits = 5, format = 'f')
[1] "1.00000"

我不喜欢舍入,我宁愿在第n位截断它而不用舍入。

> formatC(1.234567, digits = 5, format = 'f')
[1] "1.23457"

有没有办法在没有舍入R的情况下截断数字?我知道有可能首先转换为角色,然后抓住它的某个子串,但这感觉很笨重。

1 个答案:

答案 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"