不在 sprintf 中显示整数的小数点

Not display decimal point in sprintf for integers

我需要将一些数值转换为字符。如果相关,我想显示尾随零,如果数字是整数,则不显示小数位。例如,在下面的代码中,我需要输出 "11" "0.30" "0.00050" "3.1" "4.6"。如何让 11 显示为“11”而不是“11”?

sprintf('%#.2g', c(11, 0.301, 0.000502, 3.12, 4.56))

您可以删除尾随的 .像这样:

sprintf('%#.2g', c(11, 0.301, 0.000502, 3.12, 4.56)) |> stringr::str_remove("[.]$")
#> [1] "11"      "0.30"    "0.00050" "3.1"     "4.6"