这是一个框架,为 macOS、iOS 和 Linux 上的 Swift 编程语言实现了高级数值数据类型。目前,该框架提供了四种新的数值类型,每种类型都表示为结构体或枚举
BigInt
: 任意大小的有符号整数Integer
: 任意大小的有符号整数,其实现取决于表示值的大小。Rational
: 有符号有理数Complex
: 复数浮点数注意:到目前为止,对于 Swift 的每个主要版本,Apple 都决定以向后不兼容的方式显着且一致地更改 Swift 中数值类型的基础 API。为了在未来更好地与此类更改隔离,在 Swift 3 中,我决定引入 NumberKit 中使用的基于新协议 IntegerNumber
的独特整数类型。所有标准数值整数类型都实现了此协议。这与对浮点数使用协议 FloatingPointNumber
是一致的,到目前为止,浮点数从来没有一个真正通用的基础(现在仍然没有)。
BigInt
值是不可变的、有符号的、任意大小的整数,可以用作 Swift 5 现有二进制整数类型的直接替代品。结构体 BigInt
定义了所有标准的算术整数运算,并实现了 Swift 相应的数值协议。
Integer
值是不可变的、有符号的、任意大小的整数,可以用作 Swift 5 现有二进制整数类型的直接替代品。与 BigInt
不同,值的表示方式经过选择,以优化内存大小和算术运算的性能。枚举 Integer
定义了所有标准的算术整数运算,并实现了 Swift 相应的数值协议。
结构体 Rational<T>
基于现有的有符号整数类型 T
(如 Int32
、Int64
或 BigInt
)定义了不可变的有理数。有理数是一个有符号数,可以表示为两个整数 a 和 b 的商:a / b。
结构体 Complex<T>
基于现有的浮点类型 T
(如 Float
或 Double
)定义了复数。复数由两个分量组成:实部 re 和虚部 im,通常写为:re + im * i,其中 i 是虚数单位。
构建 Swift NumberKit 框架的组件需要以下技术
作者:Matthias Zenger (matthias@objecthub.net)
版权所有 © 2016-2024 Matthias Zenger。保留所有权利。