2015-10-09 6 views
1

Dire que j'ai un numéro de bigzR: Grab seul entier de bigz nombre rationnel

library(gmp) 
x <- as.bigz(99999)^99 
y <- x/66^99 

Maintenant, je veux extraire la partie entière si ce nombre a été écrit comme un nombre mixte (par exemple 183 et 15/21). Avec un plus petit nombre je pourrais floor(as.numeric(y)) mais je finirai par perdre la précision (avec ce nombre en particulier R retournera Inf).

Je voudrais simplement faire floor(y) mais cela renvoie et erreur sauf si y est un nombre entier.

On pourrait imaginer un cas plus simple:

floor(33/7) 
# returns 4 
floor(as.bigz(33)/7) 
# does not return 4 
+0

ne pas appliquer 'as.bigz' extrait la partie entière ..' x = as.bigz (33)/7; as.bigz (x) ' – user20650

Répondre

3

Vous pouvez utiliser as.bigz() pour convertir le bigq (qui est ce que votre y est) à un grand entier:

library(gmp) 
x <- as.bigz(33) 
y <- x/7 

as.bigz(y) 
# Big Integer ('bigz') : 
# [1] 4 

Alternativement , si vous n'avez pas besoin autrement y comme intermédiaire, vous pouvez simplement utiliser l'opérateur de division entier, %/%, comme suit:

x %/% 7 
# Big Integer ('bigz') : 
# [1] 4