R sprintf最多两位小数但没有前导零

时间:2016-11-18 07:12:13

标签: r format printf

根据标题,我需要一个字符串格式

sprintf(xxx,5)        prints "5"
sprintf(xxx,5.1)        prints "5.1"
sprintf(xxx,15.1234)  prints "15.12"

即:没有前导零,没有尾随零,最多2位小数。

有可能吗?如果没有sprintf,还有其他方式吗?

用例是报告通常为整数的自由度,但在更正时,可能会产生小数 - 在这种情况下,我只想添加两位小数。)

2 个答案:

答案 0 :(得分:2)

也许formatC对此更容易:

formatC(c(5, 5.1, 5.1234), digits = 2, format = "f", drop0trailing = TRUE)
#[1] "5"    "5.1"  "5.12"

答案 1 :(得分:0)

基于sprintf建议的解决方案:

sprintf("%.4g", 5)
#[1] "5"
sprintf("%.4g", 5.1)
#[1] "5.1"
sprintf("%.4g", 15.1234)
#[1] "15.12"

可以找到sprintf的详细信息,例如在这里:http://www.cplusplus.com/reference/cstdio/printf/ 其中说:

  

g |使用最短的表示形式:%e或%f

  

.number | ...对于g和G说明符:这是要打印的最大有效位数。