On Feb 9, 2011, at 6:15 AM, PtitBleu wrote:

> 
> Hello,
> 
> I have a text file with one column containing long number but stored as
> string.
> I download the file with read.table (and colClass) and the first row of this
> column is :
> 
> "095842087016731010"
> 
> As I need to make some calculations with these numbers, I tried to convert
> them using as.numeric.
> But then I get
> as.numeric("095842087016731010")
> 95842087016731008
> 
> I understand the disappearing of the first 0 but I don't understand the
> substitution of the last 0 by 8.
> 
> Is there a way to avoid that ?
> Thanks in advance,
> Ptit Bleu. 

I get:

> as.numeric("095842087016731010")
[1] 9.584209e+16

# See ?as.character

> as.character(as.numeric("095842087016731010"))
[1] "95842087016731008"


I suspect you would need to look at using one of the R packages that support 
arbitrary/infinite precision representations if you need to deal with very 
large integers. Perhaps look at gmp and Rmpfr.

You are hitting R's limit of 15 significant digits, resulting in the loss of 
precision in the internal representation of the number, which is in turn, 
presented in the resultant coercion.

HTH,

Marc Schwartz

______________________________________________
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.

Reply via email to