Decimal

Decimal

Médio

Instruções

Implementa um tipo Decimal de precisão arbitrária.

Os números de vírgula flutuante são a representação mais comum de números reais não inteiros na computação, e são um padrão comum definido pela IEEE 754. São muito flexíveis e versáteis, mas têm algumas limitações. Como é sabido, na aritmética de vírgula flutuante, 0.1 + 0.2 != 0.3.

A solução para este problema é encontrar uma outra forma, sem perdas, de modelar números reais não inteiros de precisão arbitrária. Isto pode ser menos eficiente em termos de memória ou de velocidade de processamento do que os números de vírgula flutuante; o objetivo é fornecer resultados exatos.

Apesar de Decimal ser um tipo personalizado, devemos conseguir tratá-los como números: os operadores ==, <, >, +, - e * devem funcionar todos como esperado em valores Decimal. Por conveniência, não precisas de implementar a divisão, pois a divisão de precisão arbitrária pode descontrolar-se muito rapidamente. (Como representas 1/3 com precisão arbitrária?)

Em Rust, a forma de obteres estas operações em tipos personalizados é implementares os traits relevantes para o tipo. Em particular, vais precisar de implementar pelo menos PartialEq, PartialOrd, Add, Sub e Mul. Em rigor, dado que os números decimais formam uma ordenação total, também deves implementar Eq e Ord, embora esses traits não sejam verificados por estes testes.

Seria muito fácil implementar este exercício usando o crate bigdecimal. Não faças isso; implementa isto tu mesmo.


Fonte

Peter Goodspeed-Niklaus
Editar via GitHub A ligação abre numa nova janela ou separador
Rust Exercism

Estás pronto para começar Decimal?

Inscreve-te no Exercism para aprenderes e dominares Rust com 99 exercícios, e mentoria humana real, tudo grátis.