Um número de vírgula flutuante é um número com zero ou mais algarismos depois do separador decimal. Alguns exemplos são -2.4, 0.1, 3.14, 16.984025 e 1024.0.
O F# tem três tipos de números de vírgula flutuante:
single: 4 bytes (precisão de ~6 a 9 algarismos). Escreve-se 2.45f.float: 8 bytes (precisão de ~15 a 17 algarismos). É o tipo mais comum. Escreve-se 2.45.decimal: 16 bytes (precisão de 28 a 29 algarismos). Normalmente usa-se quando se trabalha com dados monetários, pois a sua precisão dá origem a menos erros de arredondamento. Escreve-se 2.45m.Tipos de vírgula flutuante diferentes podem armazenar quantidades diferentes de algarismos depois do separador de algarismos. É a isto que se chama a sua precisão. Isto significa que, ao tentar armazenar o PI num single, só se armazenam os primeiros 6 a 9 algarismos (sendo o último arredondado).
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 na tua conta (o saldo):
1000 dólares.1000 dólares e inferior a 5000 dólares.5000 dólares.Todos os anos o governo permite-te doar uma percentagem do teu dinheiro a instituições de caridade, livre de impostos. Como és uma pessoa simpática, se o teu saldo ficar positivo no final do ano, pegas na percentagem livre de impostos, duplicas e arredondas para baixo até ao dólar inteiro mais próximo. Não te importas de pagar impostos sobre a segunda metade da doação.
Tens três tarefas, cada uma delas vai lidar com o teu saldo e a sua taxa de juro.
Implementa a função interestRate para calcular a taxa de juro com base no saldo indicado:
interestRate 200.75m
// => 0.5f
Repara que o valor devolvido é um single.
Implementa o método interest para calcular os juros com base no saldo indicado:
interest 200.75m
// => 1.00375m
Repara que o valor devolvido é um decimal.
Implementa a função annualBalanceUpdate para calcular a atualização do saldo anual, tendo em conta a taxa de juro:
annualBalanceUpdate 200.75m
// => 201.75375m
Repara que o valor devolvido é um decimal.
Implementa a função amountToDonate para calcular quanto dinheiro doar a instituições de caridade, com base no saldo e na percentagem livre de impostos que o governo permite:
let balance = 550.5m
let taxFreePercentage = 2.5
amountToDonate balance taxFreePercentage
// => 27
Repara que o valor devolvido é um int.
Inscreve-te no Exercism para aprenderes e dominares F# com 18 conceitos148 exercícios, e mentoria humana real, tudo grátis.