En C#, ¿cómo se puede almacenar y calcular con números que exceden significativamente el valor máximo de UInt64 (18,446,744,073,709,551,615)?¿Cómo se maneja con números mayores que UInt64 (C#)
Respuesta
Al usar una clase BigInteger; hay una en las bibliotecas J # (definitivamente accesible desde C#), otra en F # (necesita probar esta), y hay implementaciones independientes such as this one en C# puro.
Decimal tiene un rango mayor.
Hay soporte para bigInteger en .NET 4.0 pero aún no está fuera de beta.
¿Se puede usar la versión beta de .NET 4.0? Si es así, puede usar BigInteger
.
De lo contrario, si se queda dentro de los 28 dígitos, puede usar decimal
, pero tenga en cuenta que obviamente va a realizar aritmética decimal, por lo que puede necesitar redondear en varios lugares para compensar.
Si alguien tiene problemas con el problema del espacio de nombre, está en System.Numerics; – Adrian
Existen varias bibliotecas para el cálculo con enteros grandes, la mayoría de las bibliotecas de criptografía también ofrecen una clase para eso. Consulte this para obtener una biblioteca gratuita.
Puede usar decimal. Es mayor que Int64.
Tiene 28-29 dígitos significativos.
¿Para qué desea utilizar estos números? Si está haciendo cálculos con números realmente grandes, ¿todavía necesita la precisión hasta el último dígito? De lo contrario, debería considerar usar valores de coma flotante. Pueden ser enormes, el valor máximo para el tipo doble es 1.79769313486231570E + 308, (en caso de que no esté acostumbrado a la notación científica, significa 1.79769313486231570 multiplicado por 10000000 ... 0000 - 308 ceros).
Eso debe ser lo suficientemente grande para la mayoría de aplicaciones
Es sorprendente que nadie más haya mencionado esto, dado que OP no especificó enteros. –
BigInteger representa un entero con signo arbitrariamente grande.
using System.Numerics;
var a = BigInteger.Parse("91389681247993671255432112000000");
var b = new BigInteger(1790322312);
var c = a * b;
- 1. ¿Cómo se hacen las matemáticas (o matemáticas) con números mayores que MaxValue en C#?
- 2. Manejo de números mayores que Largo en VBA
- 3. tienda los mayores 5000 números de una serie de números
- 4. expresiones regulares procesamiento de datos numéricos: coincide con una serie de números mayores que X
- 5. RegEx: ¿Cómo puedo hacer coincidir todos los números mayores que 49?
- 6. ¿Cómo maneja Smalltalk con monkeypatching?
- 7. C#: Interfaz genérica para números
- 8. C# - ¿Cómo maneja/captura StackOverFlowExceptions?
- 9. ¿Cómo se maneja la finalización determinística en C#?
- 10. Biblioteca HTTP C/C++, que maneja solo la lógica?
- 11. Generador de números aleatorios con mayores probabilidades de dar valores bajos?
- 12. Informática para personas mayores
- 13. C# SocketAsyncEventArgs que maneja los datos de recepción y envío
- 14. ¿Cómo se maneja la importación cruzada?
- 15. ¿Cuál es el OSX, C equivalente para uint32 y uint64?
- 16. .NET Proceso de inicio con mayores derechos
- 17. ¿Cómo se maneja el HTML con formato incorrecto en Perl?
- 18. ¿Cómo se comporta Verilog con números negativos?
- 19. ¿Cómo se maneja Tomcat con IntelliJ IDEA 10.5
- 20. ¿Cómo se representa el audio con números?
- 21. ¿Cómo se maneja una excepción con AsyncController de ASP.net MVC?
- 22. código Acortar que maneja IO
- 23. ¿Cómo se maneja la concurrencia en NHibernate?
- 24. PHP OOP - ¿Cómo se maneja la autorización?
- 25. ¿Cómo puedo manejar números mayores de 17 dígitos en Firefox/IE7?
- 26. ¿Cómo se maneja Python int y long?
- 27. Objetivo C - matriz con números
- 28. ¿Cómo se maneja la memoria del código?
- 29. ¿Cómo hago un bitwise y en números mayores a 2^32 en Javascript?
- 30. Imprimir símbolos menores que y mayores que en PHP
También vale la pena señalar: existe otra implementación en el DLR para admitir los enteros de precisión indefinida de Python y Ruby, pero no he buscado ver cuál es la API pública para esa clase. –