A Swiftnek két fő számtípusa van: az egészek és a lebegőpontos számok.
0, 1, -1, 42 és -273.0.0, 3.14 és -1.36969e-10.A számkonstansokba aláhúzásjeleket szúrhatsz be, hogy átláthatóbbak legyenek: az 1_000_000 ugyanaz, mint a 1000000.
A lebegőpontos literálok tizedes vagy exponenciális jelöléssel is felírhatók.
A legtöbb esetben az egészekhez Int-et, a lebegőpontos számokhoz pedig Double-t használsz:
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
A Swift szabványos aritmetikai operátorokat biztosít a numerikus számításokhoz:
| Operátor | Leírás | Példa |
|---|---|---|
+ |
Összeadás |
4 + 6 értéke 10
|
- |
Kivonás |
15 - 10 értéke 5
|
* |
Szorzás |
2 * 3 értéke 6
|
A Swift típusbiztos, és nem engedi meg a különböző számtípusok keverését az aritmetikai műveletekben.
Egy Int és egy Double értéket nem adhatsz össze vagy szorozhatsz össze közvetlenül; először az egyik típust a másikhoz kell alakítanod.
A / operátor az osztást végzi.
Ha mindkét operandus egész szám, az egészosztás levágja a törtrészt:
5.0 / 2.0 // 2.5 (Double division)
5 / 2 // 2 (integer division truncates the remainder)
Ha egy nem nulla lebegőpontos számot osztasz nullával, az eredmény inf vagy -inf lesz.
A 0.0 0.0-val való osztásának eredménye nan (nem szám).
Ezzel szemben, ha egy egész számot osztasz nullával, az fordítási vagy futásidejű hibát okoz:
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
A maradék operátor (%) azt a maradékot számítja ki, amely két egész szám osztása után megmarad:
5 % 2 // 1
-5 % 2 // -1
// Dividing by zero produces an error:
// 5 % 0 // Error: Division by zero
A Swiftben a % valódi maradék operátor, nem modulo operátor.
Az eredmény mindig az első operandus (az osztandó) előjelét veszi fel, függetlenül a második operandus előjelétől:
5 % -2 // 1
-5 % 2 // -1
Egy lebegőpontos számot a rounded() metódussal kerekíthetsz.
Alapértelmezés szerint a rounded() a legközelebbi egész számra kerekít.
Egy konkrét kerekítési szabályt is megadhatsz, például a .up vagy a .down értéket:
let x = 3.14
let y = x.rounded() // 3.0
let w = x.rounded(.down) // 3.0
let z = x.rounded(.up) // 4.0
Amikor egy numerikus konstanst vagy változót típusannotáció nélkül deklarálsz, a Swift kikövetkezteti a típusát:
Int.Double.let x = 42 // Inferred as Int
let y = 42.0 // Inferred as Double
let z: Double = 42 // Explicitly typed as Double
Ahhoz, hogy különböző típusú értékekkel végezz műveleteket, alakítsd át az egyik értéket például a Double(_:) vagy az Int(_:) konstruktorral:
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)
Ebben a feladatban olyan kódot írsz, amely segít egy szabadúszónak egyeztetni egy projektmenedzserrel. A feladatod, hogy néhány segédfüggvényt biztosíts a napi és a havi díj gyors kiszámításához, adott esetben megadott kedvezménnyel.
Először is rögzítünk néhány szabályt a szabadúszó és a projektmenedzser között:
Néha előfordul, hogy a szabadúszó kedvezményt ajánl a napi díjából (például a leghűségesebb ügyfeleinek vagy nonprofit ügyfeleinek).
A kedvezményeket százalékokat reprezentáló törtszámként modellezzük, például 25.0 (25%).
Valósítsd meg a dailyRateFrom nevű függvényt, amely egy paraméterként kapott óradíj alapján kiszámítja a napi díjat.
A szerződés úgy rendelkezik, hogy egy nap 8 számlázható órából áll.
dailyRateFrom(hourlyRate: 60)
// Returns 480.0
A visszaadott napi díj Double legyen.
Valósítsd meg a monthlyRateFrom függvényt, amely kiszámítja a kedvezményes havi díjat.
Két paramétert kap: az óradíjat és a kedvezmény százalékban kifejezett értékét.
monthlyRateFrom(hourlyRate: 77, withDiscount: 10.5)
// Returns 12129
A visszaadott havi díjat felfelé kell kerekíteni (a felső egészrészt véve) a legközelebbi egész számra.
Valósítsd meg a workdaysIn függvényt, amely egy költségvetést, egy óradíjat és egy kedvezményt kap, és kiszámítja, hogy ez hány teljes munkanapot fedez.
workdaysIn(budget: 20000, hourlyRate: 80, withDiscount: 11.0)
// Returns 35.0
A visszaadott napok számát lefelé kell kerekíteni (az alsó egészrészt véve) a következő egész számra.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Swift nyelvet 35 fogalom116 feladat segítségével, valódi emberi mentorálással, mindez ingyen.