> > What I mean is if R shows 2.3456 I want to obtain the info that digits=4 > > > even if in facts the value has more (internal) digits. > > Try: > x = 1.23456789 > format(x, nsmall=20) > # [1] "1.23456788999999989009"
I've just re-read the question. I suspect what you really wanted was something like: getndp <- function(x, tol=2*.Machine$double.eps) { ndp <- 0 while(!isTRUE(all.equal(x, round(x, ndp), tol=tol))) ndp <- ndp+1 if(ndp > -log10(tol)) warning("Tolerance reached, ndp possibly underestimated.") ndp } x = 0.123456 getndp(x) # [1] 6 x2 <- 3 getndp(x2) # [1] 0 x3 <- 0.1234567890123456789 getndp(x3) # [1] 16 # Warning message: # In getndp(x3) : Tolerance reached, ndp possibly underestimated. Regards, Richie. Mathematical Sciences Unit HSL ------------------------------------------------------------------------ ATTENTION: This message contains privileged and confidential inform...{{dropped:20}} ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.