Pregunta

Siempre he sentido curiosidad: ¿cómo puedo realizar operaciones aritméticas en decimales muy largos, por ejemplo, calculando pi con el lugar decimal 3000 (especialmente en un lenguaje imperativo)?

¿Fue útil?

Solución

¿Utiliza un idioma o una biblioteca que admita números de precisión arbitrarios ...?

En Python, los ints se promocionarán automáticamente a largos que son de tamaño arbitrario. Podría usar un segundo valor para realizar un seguimiento de la cantidad de decimales a los que debe desplazarse para obtener una especie de punto flotante de precisión arbitraria.

En Java, puede usar BigDecimal clase, que representa " Números decimales firmados de precisión arbitraria e inmutable " ;.

Estoy seguro de que existen otros ejemplos en otros idiomas.

Otros consejos

Para los idiomas que no admiten cálculos en bignums, a menudo hay bibliotecas. Puede consultar GMP , por ejemplo. Los documentos le darán punteros a algunos de los enfoques algorítmicos típicos.

Hacer que la aritmética bignum sea rápida es difícil, por lo que hay algunos algoritmos bastante complicados por ahí ...

Tienes que trabajar con los datos a nivel de dígitos (por ejemplo, calcular cada dígito de manera incremental o determinista) o definir nuevas estructuras de datos que tengan un número suficiente de bits para proporcionar la precisión adecuada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top