Tracce
/
Elixir
Elixir
/
Programma
/
Numeri in virgola mobile
Nu

Numeri in virgola mobile in Elixir

8 esercizi

Informazioni su Numeri in virgola mobile

In Elixir ci sono due tipi diversi di numeri: gli interi e i numeri in virgola mobile.

I numeri in virgola mobile sono numeri con una o più cifre dopo il separatore decimale. Usano il formato a virgola mobile a doppia precisione a 64 bit.

float = 3.45
# => 3.45

Elixir supporta anche la notazione scientifica per i numeri in virgola mobile.

1.25e-2
# => 0.0125

Errori di arrotondamento

I numeri in virgola mobile sono famosi per i loro errori di arrotondamento.

0.1 + 0.2
# => 0.30000000000000004

Tuttavia, questo tipo di errori non è specifico di Elixir. Si verificano in tutti i linguaggi di programmazione. Questo perché tutti i dati sui nostri computer vengono memorizzati ed elaborati come codice binario. In binario, solo le frazioni il cui denominatore può essere espresso come 2^n (ad esempio 1/4, 3/8, 5/16) possono essere espresse esattamente. Le altre frazioni vengono espresse come stime.

# 3/4
Float.ratio(0.75)
# => {3, 4}

# 3/5
Float.ratio(0.6)
# => {5404319552844595, 9007199254740992}

Puoi saperne di più su questo problema su 0.30000000000000004.com. La pagina di Float Toy ha una bella spiegazione grafica di come i bit di un numero in virgola mobile vengono convertiti in un valore in virgola mobile effettivo.

Confronto

Gli interi e i numeri in virgola mobile possono essere considerati uguali (==) se hanno lo stesso valore. Tuttavia, essendo di tipi diversi, non sono mai strettamente uguali (===).

1 == 1.0
# => true

1 === 1.0
# => false

Conversione

Gli interi e i numeri in virgola mobile possono essere mescolati insieme in un'unica espressione aritmetica. Usare un numero in virgola mobile in un'espressione assicura che anche il risultato sarà un numero in virgola mobile.

2 * 3
# => 6

2 * 3.0
# => 6.0

I numeri in virgola mobile possono essere arrotondati (round), arrotondati per eccesso (ceil) o arrotondati per difetto (floor).

Per arrotondare un numero in virgola mobile ottenendo un numero in virgola mobile, usa le funzioni del modulo Float (Float.round, Float.ceil, Float.floor). Per ottenere invece un intero, usa le funzioni del modulo Kernel (round, ceil, floor).

Un altro metodo per trasformare un numero in virgola mobile in un intero è tagliare via la sua parte decimale con trunc.

Float.ceil(5.2)
# => 6.0

ceil(5.2)
# => 6

trunc(5.2)
# => 5
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Numeri in virgola mobile

La pratica è bloccata

Sblocca 4 altri esercizi per esercitarti su Numeri in virgola mobile