Percursos
/
Clojure
Clojure
/
Exercícios
/
Os juros são interessantes
Os juros são interessantes

Os juros são interessantes

Exercício de aprendizagem

Introdução

Um número de vírgula flutuante é um número com zero ou mais algarismos depois do separador decimal. Exemplos: -2.4, 0.1, 3.14, 16.984025 e 1024.0.

Tipos de vírgula flutuante diferentes podem guardar um número diferente de algarismos depois do separador decimal, e a isto chama-se precisão. Isto significa que, se tentares guardar PI num single, só vais guardar os primeiros 6 a 9 algarismos (com o último algarismo arredondado).

Os números de vírgula flutuante em Clojure são lidos como Doubles; com o sufixo M, são lidos como BigDecimals.

  • Double: 8 bytes (precisão de ~15 a 17 algarismos). É o tipo mais comum. Escreve-se como 2.45.
  • BigDecimal: valor inteiro não escalado de precisão arbitrária e uma escala inteira de 32 bits. Escreve-se como 2.45M.

Instruções

Neste exercício vais trabalhar com contas poupança. Todos os anos, o saldo da tua conta poupança é atualizado com base na sua taxa de juro. A taxa de juro que o teu banco te dá depende da quantidade de dinheiro que tens na conta (o saldo):

  • -3.213% para um saldo negativo.
  • 0.5% para um saldo inferior a 1000 dólares.
  • 1.621% para um saldo igual ou superior a 1000 dólares e inferior a 5000 dólares.
  • 2.475% para um saldo igual ou superior a 5000 dólares.

Todos os anos, antes de o saldo da tua conta poupança ser atualizado, o governo permite-te doar uma percentagem do teu dinheiro a instituições de caridade, sem impostos. Como és uma pessoa simpática, se o teu saldo for positivo no final do ano, doas o dobro dessa quantia a instituições de caridade, arredondado por defeito para o dólar inteiro mais próximo.

Tens três tarefas, cada uma delas relacionada com o teu saldo e a respetiva taxa de juro.

1. Calcula a taxa de juro

Implementa a função interest-rate para calcular a taxa de juro com base no saldo indicado:

(interest-rate 200.75M)
;;=> 0.5

Repara que o valor devolvido é um Double.

2. Calcula a atualização anual do saldo

Implementa a função annual-balance-update para calcular a atualização anual do saldo, tendo em conta a taxa de juro:

(annual-balance-update 200.75M)
;;=> 201.75375M

Repara que o valor devolvido é um BigDecimal.

3. Calcula quanto dinheiro doar

Implementa a função amount-to-donate para calcular quanto dinheiro doar a instituições de caridade, com base no saldo e na percentagem isenta de impostos que o governo permite:

(def balance 550.5M)
(def tax-free-percentage 2.5)

(amount-to-donate balance tax-free-percentage)
;;=> 27

Repara que o valor devolvido é um int.

Editar via GitHub A ligação abre numa nova janela ou separador
Clojure Exercism

Estás pronto para começar Os juros são interessantes?

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