2012-01-26 33 views
8

me preguntaba hasta qué punto se puede imprimir esta:¿Cuantos números después del punto decimal puedes mostrar usando R?

http://www.iheartchaos.com/post/16393143676/fun-with-math-dividing-one-by-998001-yields-a

En R.

por ejemplo: 1/998001

+5

R usa IEEE 754. Por lo tanto, para responder a su pregunta, no más de 16 dígitos significativos. –

+0

¿Tiene que estar en R? Un lenguaje de propósito más general como Python sería mi elección. –

+0

Sí, trivial en Python con mpmath. –

Respuesta

16

podría utilizar el paquete de mpc,

# 3000 is the precision in bits 
> mpc(1, 3000)/mpc(998001, 3000) 
[1] "(1.0020030040050060070080 ... 
... 
+0

es un paquete, lo siento – mdsumner

13

Aquí hay una solución que no requiere ningún paquete elegante, solo base R y flashback para eleme aritmética escolar ntary:

longdiv <- function(num,den, limit=3000, spaces=TRUE) { 
    i <- 0 
    if(num < den) { 
     cat('0.') 
     num <- num*10 
    } else { 
     cat(num %/% den, '.', sep='') 
     num <- (num %% den) * 10 
    } 
    while(i < limit) { 
     i <- i + 1 
     if(num < den){ 
      cat('0') 
      num <- num*10 
     } else { 
      cat(num %/% den) 
      num <- (num %% den) * 10 
     } 
     if(spaces){ 
      if((i %% 30) == 0) { 
       cat('\n') 
      } else if((i %% 3) == 0) { 
       cat(' ') 
      } 
     } 
     flush.console() 
    } 
    cat('\n') 
} 


longdiv(1,998001) 
+0

+1 muy buen trabajo de hecho –

Cuestiones relacionadas