Un numero in virgola mobile è un numero con zero o più cifre dopo il separatore decimale. Alcuni esempi sono -2.4, 0.1, 3.14, 16.984025 e 1024.0.
Tipi diversi di numeri in virgola mobile possono memorizzare un numero diverso di cifre dopo il separatore: questa caratteristica si chiama precisione. Questo significa che se provi a memorizzare PI in un single, verranno memorizzate solo le prime da 6 a 9 cifre (con l'ultima cifra arrotondata).
In Clojure, i numeri in virgola mobile vengono letti come Double; con il suffisso M vengono letti come BigDecimal.
Double: 8 byte (precisione di circa 15-17 cifre). È il tipo più comune. Si scrive 2.45.BigDecimal: valore intero non scalato a precisione arbitraria e scala come intero a 32 bit. Si scrive 2.45M.In questo esercizio lavorerai con i conti di risparmio. Ogni anno, il saldo del tuo conto di risparmio viene aggiornato in base al suo tasso di interesse. Il tasso di interesse che la banca ti riconosce dipende dalla quantità di denaro presente sul tuo conto (il suo saldo):
1000 dollari.1000 dollari e inferiore a 5000 dollari.5000 dollari.Ogni anno, prima che il saldo del tuo conto di risparmio venga aggiornato, il governo ti permette di donare una percentuale del tuo denaro in beneficenza, esentasse. Dato che sei una brava persona, se alla fine dell'anno il tuo saldo è positivo doni il doppio di questo importo in beneficenza, arrotondato per difetto al dollaro intero.
Hai tre compiti, ognuno dei quali riguarderà il tuo saldo ed il suo tasso di interesse.
Implementa la funzione interest-rate per calcolare il tasso di interesse in base al saldo indicato:
(interest-rate 200.75M)
;;=> 0.5
Nota che il valore restituito è un Double.
Implementa la funzione annual-balance-update per calcolare l'aggiornamento annuale del saldo, tenendo conto del tasso di interesse:
(annual-balance-update 200.75M)
;;=> 201.75375M
Nota che il valore restituito è un BigDecimal.
Implementa la funzione amount-to-donate per calcolare quanto denaro donare in beneficenza in base al saldo e alla percentuale esentasse che il governo permette:
(def balance 550.5M)
(def tax-free-percentage 2.5)
(amount-to-donate balance tax-free-percentage)
;;=> 27
Nota che il valore restituito è un int.
Iscriviti a Exercism per imparare e padroneggiare Clojure con 12 concetti105 esercizi e il mentoring di persone reali, tutto gratis.