This is a bit of a grey area.  You need to recall that R will always invoke a print method, and these print methods listen to some options. Including 'scipen' -- a penalty for scientific display.  From help(options):
‘scipen’: integer.  A penalty to be applied when deciding to print
            numeric values in fixed or exponential notation.  Positive
            values bias towards fixed and negative towards scientific
            notation: fixed notation will be preferred unless it is more
            than ‘scipen’ digits wider.
Example:
R> ran2 <- c(1.810032e+09, 4) 
R> options("scipen"=-100, "digits"=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> options("scipen"=100, "digits"=4)
R> ran2
[1] 1810032000          4
That said, I still find it fudgeworthy. The most direct way is to use sprintf() with explicit width e.g. sprintf("%.5f", ran2).