概览
提供管理 Swift 中数字的工具集合。
如何开始
- 将
Source
文件夹的内容复制到您的项目中。
或者
- 使用
SwiftyAlgebra
cocoa pod
要求
- iOS 9 及以上
- Xcode 9 及以上
- Swift 4
用法
数字简介
与使用许多独立的原始数字类型相比,SwiftyAlgebra 使用一个名为 Number
的通用类型,它底层与所有原始类型(如 Double
值)一起工作。Number
类与原始类型高度兼容,目前支持
Int
Float
Double
初始化新的数字非常简单
let integerNumber = Number(value: 10)
let someFloatValue: Float = 4.3
let floatNumber = Number(value: someFloatValue)
let doubleNumber = Number(value: 9.124)
您也可以轻松地获取原始值
let number = Number(value: 9.124)
number.int // 9
number.float // 9.124
number.double // 9.124
整数
检查数字是否为整数
let double1 = Number(value: 9.124)
double1.isInteger // false
let double2 = Number(value: 9.0)
double2.isInteger // true
检查数字是否为自然数
let int = Number(value: -20)
int1.isNatural // false
let double = Number(value: 20.0)
double.isNatural // true
检查数字是否为素数
let int1 = Number(value: 10)
int1.isPrime // false
let int2 = Number(value: 3)
int2.isPrime // true
自然数因子
let int = Number(value: 16)
let divisors = int.naturalDivisors // [1, 2, 4, 8, 16]
素数因子
let int = Number(value: 150)
let divisors = int.primeDivisors // [2, 3, 5]
素数分解
let int = Number(value: 150)
let divisors = int.primeFactorization // [2, 3, 5, 5]
运算符
一个 Number
可以轻松地添加到另一个
let ten = Number(value: 10)
let two = Number(value: 2)
let sum = ten + two
sum.int // 12
为了更好地与原始数值类型兼容,SwiftyAlgebra
提供了一套运算符,当您需要在同一表达式中使用 Number
和原始变量时,这些运算符可能会很有用
let number = Number(value: 10) + 2
number.int // 12
支持的运算符完整列表
左侧类型 | 运算符 | 右侧类型 | 示例 |
---|---|---|---|
加法 | |||
Number | + | Number |
Number(value: 10) + Number(value: 2)
|
Number | + | Int |
Number(value: 10) + 2
|
Number | + | Float |
Number(value: 10) + 2.0
|
Number | + | Double |
Number(value: 10) + 2.0
|
Int | + | Number |
10 + Number(value: 2)
|
Float | + | Number |
10.0 + Number(value: 2)
|
Double | + | Number |
10.0 + Number(value: 2)
|
Number | += | Number |
Number(value: 10.0) += Number(value: 2)
|
Number | += | Int |
Number(value: 10.0) += 2
|
Number | += | Float |
Number(value: 10.0) += 2.0
|
Number | += | Double |
Number(value: 10.0) += 2.0
|
Int | += | Number |
var value: Int = 10; value += Number(value: 2)
|
Float | += | Number |
var value: Float = 10.0; value += Number(value: 2.0)
|
Float | += | Number |
var value: Double = 10.0; value += Number(value: 2.0)
|
Float | ++ | None |
let number = Number(value: 10); number++
|
减法 | |||
Number | - | Number |
Number(value: 10) - Number(value: 2)
|
Number | - | Int |
Number(value: 10) - 2
|
Number | - | Float |
Number(value: 10) - 2.0
|
Number | - | Double |
Number(value: 10) - 2.0
|
Int | - | Number |
10 - Number(value: 2)
|
Float | - | Number |
10.0 - Number(value: 2)
|
Double | - | Number |
10.0 - Number(value: 2)
|
Number | -= | Number |
Number(value: 10.0) -= Number(value: 2)
|
Number | -= | Int |
Number(value: 10.0) -= 2
|
Number | -= | Float |
Number(value: 10.0) -= 2.0
|
Number | -= | Double |
Number(value: 10.0) -= 2.0
|
Int | -= | Number |
var value: Int = 10; value -= Number(value: 2)
|
Float | -= | Number |
var value: Float = 10.0; value -= Number(value: 2.0)
|
Float | -= | Number |
var value: Double = 10.0; value -= Number(value: 2.0)
|
Float | -- | None |
let number = Number(value: 10); number--
|
乘法 | |||
Number | * | Number |
Number(value: 10) * Number(value: 2)
|
Number | * | Int |
Number(value: 10) * 2
|
Number | * | Float |
Number(value: 10) * 2.0
|
Number | * | Double |
Number(value: 10) * 2.0
|
Int | * | Number |
10 * Number(value: 2)
|
Float | * | Number |
10.0 * Number(value: 2)
|
Double | * | Number |
10.0 * Number(value: 2)
|
Number | *= | Number |
Number(value: 10.0) *= Number(value: 2)
|
Number | *= | Int |
Number(value: 10.0) *= 2
|
Number | *= | Float |
Number(value: 10.0) *= 2.0
|
Number | *= | Double |
Number(value: 10.0) *= 2.0
|
Int | *= | Number |
var value: Int = 10; value *= Number(value: 2)
|
Float | *= | Number |
var value: Float = 10.0; value *= Number(value: 2.0)
|
Float | *= | Number |
var value: Double = 10.0; value *= Number(value: 2.0)
|
除法 | |||
Number | / | Number |
Number(value: 10) / Number(value: 2)
|
Number | / | Int |
Number(value: 10) / 2
|
Number | / | Float |
Number(value: 10) / 2.0
|
Number | / | Double |
Number(value: 10) / 2.0
|
Int | / | Number |
10 / Number(value: 2)
|
Float | / | Number |
10.0 / Number(value: 2)
|
Double | / | Number |
10.0 / Number(value: 2)
|
Number | /= | Number |
Number(value: 10.0) /= Number(value: 2)
|
Number | /= | Int |
Number(value: 10.0) /= 2
|
Number | /= | Float |
Number(value: 10.0) /= 2.0
|
Number | /= | Double |
Number(value: 10.0) /= 2.0
|
Int | /= | Number |
var value: Int = 10; value /= Number(value: 2)
|
Float | /= | Number |
var value: Float = 10.0; value /= Number(value: 2.0)
|
Float | /= | Number |
var value: Double = 10.0; value /= Number(value: 2.0)
|
许可证
SwiftyAlgebra
基于 MIT 许可证提供。更多详情请参阅许可证文件。