对于像0.999942062这样的值,我想将此值显示为0.99,而不舍入到1。为此,我尝试了以下功能:
x <- 0.999942062
round(x, 2)
formatC(x, 2)
sprintf(x, fmt = '%#.2f')
它们全都是1。您知道如何像0.99一样打印吗?
答案 0 :(得分:2)
您可以将substr()
预先转换为"character"
。
substr(as.character(0.999942062), 1, 4)
# [1] "0.99"
答案 1 :(得分:1)
使用trunc(x * 10^n) / 10^n
来简单地截断数字(有效地将其舍入为0)
floor(x * 10^n) / 10^n
也将相同的正数归档
更改了floor
和trunc
的用法,因为正如 @Sotos 和 @Roland 指出的那样,我误记了它们的用法
答案 2 :(得分:0)
如果您的数字小数点左边的位数可能有所不同,则在转换为字符以找到小数点然后在末尾添加两位数之后,您将要在substr内使用regexpr。像这样:
substr(as.character(10.999462), 1, regexpr("\\.", as.character(10.999462)) + 2)
答案 3 :(得分:0)
x = c(0.999942062, 20)
gsub("(.*)(\\.)(.{2}).*", "\\1\\2\\3", x)
#[1] "0.99" "20"