¿Cómo puedo prevenir la R de redondeo?

Por ejemplo,

> a<-893893084082902
> a
[1] 8.93893e+14

Me estoy perdiendo una gran cantidad de información que hay. He intentado signif() y no parece hacer lo que quiero.

Gracias de antemano!

(Esto ocurrió como resultado de un alumno mío tratando de determinar cuánto tiempo le tomaría a contar con un cuadrillón en un número por segundo)

OriginalEl autor Michael | 2011-07-12

3 Comentarios

  1. 13

    No redondeo; es sólo el formato predeterminado para la impresión de grandes (o pequeños) números.

    a <- 893893084082902
    > sprintf("%f",a)
    [1] "893893084082902.000000"

    Ver los «dígitos» de la sección de ?options para una solución global.

    Del mismo modo a - 8.93893e+14 da [1] 84082902
    Por supuesto que debe de haber comprobado que la primera!
    Gracias Joshua!. Voy a ver ahora. Yo no soy de perder la información, simplemente no se muestra. Hay un «recomendado» número de dígitos de la pantalla?
    No afecta a los cálculos, por lo que depende exclusivamente de su preferencia. El más dígitos de impresión, más probable es que las columnas de los datos será ajustado a varias líneas.

    OriginalEl autor Joshua Ulrich

  2. 6

    Para obtener alrededor de R es entero límites, puede utilizar el gmp paquete de R: http://cran.r-project.org/web/packages/gmp/index.html

    Descubrí este paquete cuando se juega con el Proyecto de Euler desafíos y la necesidad de hacer factorizations. Pero también proporciona funciones para las grandes enteros.

    EDICIÓN:
    Parece que esta pregunta no fue realmente una gran enteros como lo fue acerca de redondeo. Pero para la próxima espacio viajero que viene de esta manera, he aquí un ejemplo de grandes enteros con gmp:

    Intentar multiplicar 1e500 * 1e500 uso de la base R:

    > 1e500 * 1e500
    [1] Inf

    Para hacer lo mismo con gmp primero necesita crear una gran objeto entero que se llama bigz. Si intenta pasar as.bigz() un int o el doble de un número muy grande, no va a funcionar, porque la razón por la que estamos usando gmp es porque R no puede contener un número tan grande. Así que le pasamos una cadena. Así, el siguiente código se inicia con la manipulación de cadenas para crear la gran cadena:

    library(gmp)
    o <- paste(rep("0", 500), collapse="")
    a <- as.bigz(paste("1", o, sep=""))
    mul.bigz(a, a)

    Puede contar los ceros, si usted está tan inclinado.

    gracias por mantener la respuesta aquí, Google me trajo aquí con exactamente esa pregunta. 😉
    ..Prefiero usar el nchar que contar de mi, pero, hey – cada uno a lo suyo! 😉

    OriginalEl autor JD Long

  3. 3

    Esto mostraría más dígitos para los números:

    options(digits=15)

    O, si desea simplemente para a:

    print(a, digits=15)

    OriginalEl autor Tommy

Dejar respuesta

Please enter your comment!
Please enter your name here