Pergunta

Eu sempre fui curioso: como posso executar operações aritméticas em muito longos decimais - por exemplo, calculando pi para o lugar 3000 decimal (especialmente em uma linguagem imperativa)

Foi útil?

Solução

Use uma linguagem ou biblioteca que suporta arbitrariamente números de precisão ...?

Em Python, ints vai auto-promover para longs que são tamanho arbitrário. Você pode usar um segundo valor para manter o controle de quantas casas decimais a mudar ao longo de obter uma espécie de ponto flutuante de precisão arbitrária.

Em Java você pode usar a BigDecimal classe , que representa "imutável, de precisão arbitrária assinado números decimais".

Eu tenho certeza que existem outros exemplos em outros idiomas.

Outras dicas

Para idiomas que não suportam cálculos sobre bignums, muitas vezes há bibliotecas. Você pode ter um olhar para GMP , por exemplo. Os médicos vão dar-lhe indicações para algumas das abordagens típicas algorítmicos.

Fazendo bignum rápido aritmética é difícil, por isso há alguns algoritmos bastante complicadas lá fora ...

quer ter de trabalho com os dados no nível de dígitos (por exemplo, calcular cada dígito incrementalmente ou deterministamente) ou definir novas estruturas de dados que têm um número suficiente de bits para fornecer precisão adequada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top