Nu

Numeri in Swift

1 esercizio

Informazioni su Numeri

Numeri

Swift mette a disposizione due categorie principali di numeri: i numeri interi e i numeri in virgola mobile.

  • I numeri interi rappresentano numeri senza parte frazionaria, come 0, 1, -1, 42 e -273.
  • I numeri in virgola mobile rappresentano numeri con una parte frazionaria, come 0.0, 3.14 e -1.36969e-10.

Puoi inserire degli underscore nei letterali numerici per migliorarne la leggibilità: 1_000_000 è identico a 1000000. I letterali in virgola mobile si possono scrivere in notazione decimale o esponenziale.

Nella maggior parte dei casi, usi Int per i numeri interi e Double per i numeri in virgola mobile:

let speed: Int = 42                           // Explicit Int
let pi: Double = 3.14                         // Explicit Double
let giga: Double = 1_000_000_000              // Double with readability underscores
let plancksConstant: Double = 6.62607015e-34  // Double in scientific notation

Operatori aritmetici

Swift mette a disposizione i normali operatori aritmetici per i calcoli numerici:

Operatore Descrizione Esempio
+ Addizione 4 + 6 dà come risultato 10
- Sottrazione 15 - 10 dà come risultato 5
* Moltiplicazione 2 * 3 dà come risultato 6
Caution

Swift è type-safe e non permette di mescolare tipi numerici diversi nelle operazioni aritmetiche. Non puoi sommare o moltiplicare direttamente un Int e un Double: devi prima convertire un tipo per farlo corrispondere all'altro.

Divisione

L'operatore / esegue la divisione. Quando entrambi gli operandi sono numeri interi, la divisione intera tronca l'eventuale resto frazionario:

5.0 / 2.0 // 2.5 (Double division)
5 / 2     // 2 (integer division truncates the remainder)

Dividere un numero in virgola mobile diverso da zero per zero dà come risultato inf o -inf. Dividere 0.0 per 0.0 produce nan (Not a Number). Al contrario, dividere un numero intero per zero provoca un errore in fase di compilazione o di esecuzione:

print(5.0 / 0.0)  // Prints inf
print(-5.0 / 0.0) // Prints -inf
print(0.0 / 0.0)  // Prints nan

// The following line will not compile:
// print(5 / 0) // Error: Division by zero

Operatore resto

L'operatore resto (%) calcola il resto che rimane dopo aver diviso due numeri interi:

5 % 2  // 1
-5 % 2 // -1

// Dividing by zero produces an error:
// 5 % 0 // Error: Division by zero
Note

In Swift, % è un vero operatore resto e non un operatore modulo. Il risultato ha sempre il segno del primo operando (il dividendo), indipendentemente dal segno del secondo operando:

5 % -2  // 1
-5 % 2  // -1

Arrotondare i numeri in virgola mobile

Puoi arrotondare un numero in virgola mobile usando il metodo rounded(). Per impostazione predefinita, rounded() arrotonda all'intero più vicino. Puoi anche specificare una regola di arrotondamento, come .up o .down:

let x = 3.14
let y = x.rounded()      // 3.0
let w = x.rounded(.down) // 3.0
let z = x.rounded(.up)   // 4.0

Inferenza dei tipi

Quando dichiari una costante o una variabile numerica senza un'annotazione di tipo, Swift ne deduce il tipo:

  • I numeri interi corrispondono a Int per impostazione predefinita.
  • I numeri che contengono un punto decimale corrispondono a Double per impostazione predefinita.
let x = 42         // Inferred as Int
let y = 42.0       // Inferred as Double
let z: Double = 42 // Explicitly typed as Double

Conversione di tipi

Per eseguire operazioni tra valori di tipi diversi, converti un valore usando gli inizializzatori di tipo come Double(_:) o Int(_:):

let integerCount = 42
let floatingCount = Double(integerCount)
print(floatingCount) // Prints 42.0

let pi = 3.14
let integerPi = Int(pi)
print(integerPi) // Prints 3 (fractional part is truncated)
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Numeri