2012-01-26 13 views

risposta

16

è possibile utilizzare il pacchetto mpc,

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

è un pacchetto, mi dispiace – mdsumner

13

Ecco una soluzione che non richiede alcun pacchetto di fantasia, basta basare R e un flashback per eleme aritmetica della scuola media:

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 un lavoro molto bello –

Problemi correlati