如何仅显示两个小数点而不四舍五入

时间:2019-10-24 14:00:32

标签: r

对于像0.999942062这样的值,我想将此值显示为0.99,而不舍入到1。为此,我尝试了以下功能:

x <- 0.999942062
round(x, 2)
formatC(x, 2)
sprintf(x, fmt = '%#.2f')

它们全都是1。您知道如何像0.99一样打印吗?

4 个答案:

答案 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也将相同的正数归档

修改

更改了floortrunc的用法,因为正如 @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"