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.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):
1000 dólares.1000 dólares e inferior a 5000 dólares.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.
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.
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.
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.
Inscreve-te no Exercism para aprenderes e dominares Clojure com 12 conceitos105 exercícios, e mentoria humana real, tudo grátis.