Trilhas
/
Clojure
Clojure
/
Exercícios
/
Juros são interessantes
Juros são interessantes

Juros são interessantes

Exercício de aprendizagem

Introdução

Um número de ponto flutuante é um número com zero ou mais dígitos depois do separador decimal. Alguns exemplos são -2.4, 0.1, 3.14, 16.984025 e 1024.0.

Tipos de ponto flutuante diferentes conseguem armazenar quantidades diferentes de dígitos depois do separador decimal, e é isso que chamamos de precisão. Isso significa que, ao tentar armazenar PI em um single, só os 6 a 9 primeiros dígitos serão guardados (com o último dígito arredondado).

Números de ponto flutuante em Clojure são lidos como Double; com o sufixo M, são lidos como BigDecimal.

  • Double: 8 bytes (precisão de ~15 a 17 dígitos). Esse é o tipo mais comum. Escrito como 2.45.
  • BigDecimal: valor inteiro não escalonado de precisão arbitrária e uma escala de 32 bits. Escrito como 2.45M.

Instruções

Neste exercício, você vai trabalhar com contas de poupança. A cada ano, o saldo da sua conta de poupança é atualizado com base na sua taxa de juros. A taxa de juros que o seu banco oferece depende da quantidade de dinheiro na sua conta (o saldo):

  • -3,213% para um saldo negativo.
  • 0,5% para um saldo menor que 1000 dólares.
  • 1,621% para um saldo maior ou igual a 1000 dólares e menor que 5000 dólares.
  • 2,475% para um saldo maior ou igual a 5000 dólares.

A cada ano, antes que o saldo da sua conta de poupança seja atualizado, o governo permite que você doe uma porcentagem do seu dinheiro para instituições de caridade, sem pagar impostos. Como você é uma pessoa legal, se o seu saldo for positivo no fim do ano, você doa o dobro desse valor para instituições de caridade, arredondado para baixo até o dólar inteiro mais próximo.

Você tem três tarefas, e cada uma delas vai lidar com o seu saldo e a sua taxa de juros.

1. Calcule a taxa de juros

Implemente a função interest-rate para calcular a taxa de juros com base no saldo especificado:

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

Observe que o valor retornado é um Double.

2. Calcule a atualização anual do saldo

Implemente a função annual-balance-update para calcular a atualização anual do saldo, levando em conta a taxa de juros:

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

Observe que o valor retornado é um BigDecimal.

3. Calcule quanto dinheiro doar

Implemente a função amount-to-donate para calcular quanto dinheiro doar para instituições de caridade, com base no saldo e na porcentagem 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

Observe que o valor retornado é um int.

Editar via GitHub O link abre em uma nova janela ou aba
Clojure Exercism

Tudo pronto para começar Juros são interessantes?

Crie sua conta no Exercism para aprender e dominar Clojure com 12 conceitos105 exercícios e mentoria humana de verdade, tudo de graça.