2013-05-21 3 views
2

Pourquoifonction Format de R retour un résultat étrange

format(4444444444444444444,scientific=FALSE) 

retour "4444444444444444672"?

Je pensais que ce pourrait être une chose de précision entière, mais ce nombre est relativement faible. Merci! Je cours R version 3.0.0 sur Ubuntu Linux.

Répondre

5

Si vous donnez R un nombre entier supérieur:

> .Machine$integer.max 
[1] 2147483647 

Il convertit en un double. Le R-FAQ has 7.31. (La taille des indices vectoriels a été augmentée avec la dernière version de R (3.0.0) et il semble possible que la taille maximale d'un nombre entier puisse être élargie dans la version précédente de R (3.0.0). Je ne comprends pas très bien comment nous pouvons garder la limite sur les tailles d'entiers et aussi accéder aux index vectoriels qui sont plus grands.)

4

Ce n'est pas un entier de 32 bits.

R> as.integer(4444444444444444444) 
[1] NA 
Warning message: 
NAs introduced by coercion 

C'est un nombre à virgule flottante double précision, qui ne possède que 15-16 positions de précision. Ce qui précède échoue parce que le nombre est supérieur à .Machine$integer.max. Le ...672 est l'erreur d'arrondi. Si vous devez utiliser de grands nombres, considérez des paquets comme gmp.

Questions connexes