Tengo un problema que necesito consejo: tengo que hacer cálculos con números grandes, en el rango de ( más/menos, con signo ); parte entera: 70*(10^27) y precisión, parte decimal: 9*(10^-31) . La mayoría de las veces solo hago operaciones simples simples (sumar/subtr/mult/div) donde podría ignorar la mayoría de los dígitos (usar solo 8 decimales) de la parte decimal; sin embargo, en muchos casos, tendría que tomar el 'todo' decimal y hacer cálculos con esa precisión (y almacenar el resultado que se utiliza en los cálculos posteriores). Un ejemplo de un número:
66898832014839425790021345548 . 8499970865478385639546957014538
Vi los artículos sobre decimal vs largo, etc. ¿Debería usar un decimal o debería hacerse un tipo personalizado? Si la respuesta es sí, ¿cómo puedo hacer operaciones aritméticas simples? (Solo se acepta el redondeo del último decimal) Mis proyectos están todos en C# y SQL Server; Muchas gracias por adelantado.
No hay una implementación estándar en C#, pero puede crear su propia biblioteca basada en BigInteger como
public BigDecimal(BigInteger integer, BigInteger scale)También puede hacer referencia a algunas bibliotecas de terceros como GMP con sus bifurcaciones/puertos .Net como Math.Gmp.Native.NET , libgmp , etc.
Hay algunas bibliotecas personalizadas, como Franz Gleichmann ya mencionó en su comentario: BigDecimal , AngouriMath
Para SQL Server, la mayoría de las bibliotecas usan cadenas para almacenar este tipo de datos. Por ejemplo, en Java existe BigDecimal y se asigna a una cadena a través de JDBC .