none
Numeros decimales grandes RRS feed

  • Pregunta

  • Hola a todos,

    Estoy haciendo una aplicación de escritorio que debe manejar datos precisos y de ordenes de magnitud muy pequeños y muy grandes ya que deba tratar con factoriales. He intentado utilizar como tipos de datos decimal y double, pero siempre me he encontrado con las limitaciones del tipo de datos.

    La pregunta es, igual que existe una clase para manejar números enteros muy grandes (BigInteger), ¿Existe alguna clase para manejar datos decimales muy grandes o muy pequeños?

    Un saludo y muchas gracias.


    Daniel Simal

    lunes, 3 de noviembre de 2014 23:50

Respuestas

  • Creo que tendría más suerte en C o C++:  http://www.moshier.net/

    Jose R. MCP
    Code Samples

    martes, 4 de noviembre de 2014 6:07
    Moderador
  • Hola

    El decimal es perfecto, a menos que vayas a superar la cantidad positiva de 79,228,162,514,264,337,593,543,950,335 o bien revisa la especificación http://msdn.microsoft.com/en-us/library/364x0z75.aspx

    Si aún asi crees que es muy limitado, entonces solo tendrás la opción de realizar un procedimiento que utilice cadenas de texto. capaz de soportar las dimensiones que tienes planeadas utilizar, esto a que no existe algún tipo que sea equivalente a un "big decimal"

    Saludos,

    miércoles, 5 de noviembre de 2014 19:29

Todas las respuestas

  • hola

     UNIDAD I: C# NET ELEMENTOS BÁSICOS

    el decimal por lo que entiendo soporta 29 decimales, no me parece poco

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 4 de noviembre de 2014 0:11
  • La precisión del decimal va bien, el problema viene al calcular el factorial (por ejemplo el factorial de 400), al final este tipo de datos se desborda, sin embargo con el tipo de datos double, que admite un rango mas amplio, también se desborda y no me da la precisión que necesito.

    Para calcular el factorial podría utilizar la clase BigInteger, pero al hacer el casting a un tipo de datos decimal se desbordaría, por eso necesito un tipo de datos que admita números decimales muy grandes y muy pequeños.

    Un saludo,


    Daniel Simal

    martes, 4 de noviembre de 2014 0:30
  • Factorial de 400?


    G. Poliovei

    martes, 4 de noviembre de 2014 1:01
  • Haciendo memoria recuerdo que en C y el tipo double el maximo numero soportado para factorial era 170, un numero mayor se obtene como resultado infinito,considerando ke en una calculadora cientifica el maximo soportado es 69


    G. Poliovei

    martes, 4 de noviembre de 2014 1:12
  • hola

    podrias buscar implementaciones de terceros que amplian las capacidades de los tipos de datos

    BigDecimal.cs

    BigDecimal type in .NET

    What is the equivalent of the Java BigDecimal class in C#?

    salidos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 4 de noviembre de 2014 2:13
  • Creo que tendría más suerte en C o C++:  http://www.moshier.net/

    Jose R. MCP
    Code Samples

    martes, 4 de noviembre de 2014 6:07
    Moderador
  • Hola

    El decimal es perfecto, a menos que vayas a superar la cantidad positiva de 79,228,162,514,264,337,593,543,950,335 o bien revisa la especificación http://msdn.microsoft.com/en-us/library/364x0z75.aspx

    Si aún asi crees que es muy limitado, entonces solo tendrás la opción de realizar un procedimiento que utilice cadenas de texto. capaz de soportar las dimensiones que tienes planeadas utilizar, esto a que no existe algún tipo que sea equivalente a un "big decimal"

    Saludos,

    miércoles, 5 de noviembre de 2014 19:29
  • La precisión del decimal va bien, el problema viene al calcular el factorial (por ejemplo el factorial de 400), al final este tipo de datos se desborda, sin embargo con el tipo de datos double, que admite un rango mas amplio, también se desborda y no me da la precisión que necesito.

    Para calcular el factorial podría utilizar la clase BigInteger, pero al hacer el casting a un tipo de datos decimal se desbordaría, por eso necesito un tipo de datos que admita números decimales muy grandes y muy pequeños.

    Un saludo,


    Daniel Simal

    Me parece que solo los procesadores cuánticos son capaces de procesar ese número, el factorial de 25 es: 18,446,744,073,709,551,615 ... me temo que debes pensar en otra estrategia.

    http://discuss.codechef.com/questions/7349/computing-factorials-of-a-huge-number-in-cc-a-tutorial

    miércoles, 5 de noviembre de 2014 19:35