Я пытаюсь применить функцию последовательного округления к любому вещественному числу, чтобы выполнялось следующее условие: «Числа должны указываться не более чем с двумя десятичными цифрами и не более чем с двумя значащими цифрами».
Например:
0,0236 следует указывать как 0,02
0,236 следует указывать как 0,24
2,36 следует указывать как 2,4
23,6 следует указывать как 24
236 следует указывать как 240
Кажется, что всякий раз, когда после округления с round
и signif
есть конечные нули, они опускаются (например, 0,90023 становится 0,9 вместо 0,90). Я пробовал следующий фрагмент кода:
my_round <- function(x1) {
x2 <- formatC(x1, digits=2, format="f", drop0trailing=FALSE)
x2 <- as.numeric(x2)
x3 <- formatC(x2, digits=2, format="fg", flag="#", drop0trailing=FALSE)
x3 <- as.numeric(x3)
print(x3)
}
Это прекрасно работает для любого числа, кроме таких, как 195 (более двух значащих цифр в их целой части), которое остается 195, а не округляется до 200.
Буду признателен за любую помощь по этой теме.
(R v3.1.0, 10 апреля 2014 г.)