Track
/
Clojure
Clojure
/
Esercizi
/
L'interesse è interessante
L'interesse è interessante

L'interesse è interessante

Esercizio di apprendimento

Introduzione

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.

Istruzioni

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):

  • -3,213% per un saldo negativo.
  • 0,5% per un saldo inferiore a 1000 dollari.
  • 1,621% per un saldo maggiore o uguale a 1000 dollari e inferiore a 5000 dollari.
  • 2,475% per un saldo maggiore o uguale a 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.

1. Calcola il 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.

2. Calcola l'aggiornamento annuale del saldo

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.

3. Calcola quanto denaro donare

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.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Clojure Exercism

Vuoi iniziare L'interesse è interessante?

Iscriviti a Exercism per imparare e padroneggiare Clojure con 12 concetti105 esercizi e il mentoring di persone reali, tutto gratis.