Вам необходимо указать аргумент step =
для произвольного увеличения точности. В документации сказано, что «heuristi c используется» для определения размера шага по умолчанию, что приводит к наблюдаемому вами округлению. Смотрите эту обновленную версию:
library(shiny)
ui <- fluidPage(
fluidPage(
sliderInput(
inputId = "test",
label = "A Nice Label",
min = 2.52,
max = 45734.68,
step = 0.01, # the smallest level of precision in your args
value = 30982.63, # no longer rounded
round = FALSE # this is the default
),
verbatimTextOutput(
"value"
)
)
)
## SERVER PROCESSING DEFINITION
# this section defines how data is processed in response to manipulations in the ui
server <- function(input, output, session) {
output$value <- renderText({
sprintf("%5.6f", input$test) # format text to show precision
})
}
shinyApp(ui, server)
Если вы покопаетесь в sliderInput
, вы найдете следующее определение для shiny:::findStepSize
:
function (min, max, step)
{
if (!is.null(step))
return(step)
range <- max - min
if (range < 2 || hasDecimals(min) || hasDecimals(max)) {
pretty_steps <- pretty(c(min, max), n = 100)
n_steps <- length(pretty_steps) - 1
signif(digits = 10, (max(pretty_steps) - min(pretty_steps))/n_steps)
}
else {
1
}
}
Итак, вы можете видеть, что он пытается сделать около 100 шагов между вашими минимальными и максимальными значениями, поэтому они автоматически округляются до целых (или даже больших шагов).