Swift 數學運算筆記
計算數字位數 (Digit Count)
在 Swift 中計算一個數字有幾位數的方法:
方法 1:字串轉換法
let number = 12345
let digitCount = String(number).count
print("位數是 \(digitCount)") // 位數是 5
- 最簡單直觀的方法
- 適用於大部分情況
方法 2:數學計算法
let number = 12345
let digitCount = number == 0 ? 1 : Int(log10(Double(abs(number)))) + 1
print("位數是 \(digitCount)") // 位數是 5
- 效能較佳,不需要字串轉換
- 注意:需要特別處理 0 的情況,因為 log10(0) 會出錯
方法 3:迴圈除法
var number = 12345
var digits = 0
repeat {
digits += 1
number /= 10
} while number != 0
print("位數是 \(digits)") // 位數是 5
- 傳統的計算方式
- 邏輯清楚易懂
建議使用: 一般情況用方法 1,效能要求高的場景用方法 2
計算平方 (Square)
方法 1:直接相乘 (推薦)
let x = 5
let square = x * x
print(square) // 25
- 最簡單、效能最好
- 適用於所有整數類型
方法 2:使用 pow 函式
func pow(_: Double, _: Double) -> Double
import Foundation
let x = 5.0
let square = pow(x, 2) // 5^2
print(square) // 25.0
- 需要 import Foundation
- 回傳 Double 類型,如需整數要轉型:
Int(pow(5.0, 2))
方法 3:Extension 擴展
extension BinaryInteger {
var squared: Self { self * self }
}
let n = 12
print(n.squared) // 144
- 提供更語義化的使用方式
- 適用於所有整數類型
建議使用: 直接用 x * x