Skip to main content

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,效能最佳且簡潔