I can reproduce this. It has to do with whether the value rounds down to 9 or up to 10, and thus needs another space, I think. I agree that it shouldn't happen, but at least you can get rid of the space by using trim = TRUE.
# rounds to 9 vs 10 format(9.95, digits = 2) format(9.96, digits = 2) format(9.95, digits = 2, nsmall = 2) format(9.96, digits = 2, nsmall = 2) format(9.95, digits = 2, nsmall = 2, trim=TRUE) format(9.96, digits = 2, nsmall = 2, trim=TRUE) # rounds to 99 vs 100 format(99.94, digits = 3) format(99.95, digits = 3) format(99.94, digits = 3, nsmall = 2) format(99.95, digits = 3, nsmall = 2) format(99.94, digits = 3, nsmall = 2, trim=TRUE) format(99.95, digits = 3, nsmall = 2, trim=TRUE) > sessionInfo() R version 3.5.3 (2019-03-11) Platform: x86_64-redhat-linux-gnu (64-bit) Running under: Fedora 28 (Workstation Edition) Matrix products: default BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] colorout_1.2-0 loaded via a namespace (and not attached): [1] compiler_3.5.3 tools_3.5.3 > # rounds to 9 vs 10 > > format(9.95, digits = 2) [1] "9.9" > format(9.96, digits = 2) [1] "10" > > format(9.95, digits = 2, nsmall = 2) [1] "9.95" > format(9.96, digits = 2, nsmall = 2) [1] " 9.96" > > format(9.95, digits = 2, nsmall = 2, trim=TRUE) [1] "9.95" > format(9.96, digits = 2, nsmall = 2, trim=TRUE) [1] "9.96" > > # rounds to 99 vs 100 > > format(99.94, digits = 3) [1] "99.9" > format(99.95, digits = 3) [1] "100" > > format(99.94, digits = 3, nsmall = 2) [1] "99.94" > format(99.95, digits = 3, nsmall = 2) [1] " 99.95" > > format(99.94, digits = 3, nsmall = 2, trim=TRUE) [1] "99.94" > format(99.95, digits = 3, nsmall = 2, trim=TRUE) [1] "99.95" On Thu, Jun 20, 2019 at 3:19 AM David J. Birke <djbi...@berkeley.edu> wrote: > > Dear R Core Team, > > First of all, thank you for your amazing work on developing and > maintaining this wonderful language. > > I just stumbled upon the following behavior in R version 3.6.0: > > format(9.91, digits = 2, nsmall = 2) > format(9.99, digits = 2, nsmall = 2) > > yield "9.91" and " 9.99" with an extraneous whitespace. > > My expected output for the second command is "9.99". > > I have not found anything explaining the whitespace in the help files. > Therefore, I am writing to report this behavior as a possible bug. > > Best wishes, > David > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- Sarah Goslee (she/her) http://www.numberwright.com ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel