FixFloat

这个定点浮点数数学库为算术和几何运算提供了一种高效且确定性的解决方案。

特性

安装

使用 Swift Package Manager 添加 iFixFloat

import iFixFloat

工作原理

`FixFloat` 扩展使用定点算术来执行具有高度精度和确定性的计算。它支持 2^21 - 1 到 -2^21 + 1 范围内的数字,精度为 1/1024,最适合于 1,000,000 到 -1,000,000 范围,精度为 0.01。

定点数使用固定数量的位来表示小数部分。 在此实现中,表示定点数的小数部分的位数是 10,这允许精度为 1/1024 或大约 0.001。

以下是一些定点数表示的示例

通过使用 `FixFloat` 扩展,您可以使用 Int64 值执行算术运算,同时保持浮点数的精度,从而确保在不同平台和设备上的确定性行为。

用法

FixFloat

`FixFloat` 扩展使用 `Int64` 作为底层存储来表示定点数,允许确定性的算术运算。 当需要确定性行为时,使用 `FixFloat` 进行计算,而不是 `Float` 或 `Double`。 `FixFloat` 提供了一种使用 `Int64` 值执行算术运算,同时保持浮点数精度的方法。

let a = 3.14.fix
let b = 2.0.fix
let result = a.mul(b)
let resultAsFloat = result.float

FixVec

`FixVec` 结构体表示一个 2D 定点向量,为向量运算提供各种实用方法和运算符。 当需要确定性行为时,使用 `FixVec` 进行 2D 几何计算。

let vec1 = FixVec(1.0.fix, 2.0.fix)
let vec2 = FixVec(3.0.fix, 4.0.fix)

let sum = vec1 + vec2
let difference = vec1 - vec2

FixAngle

`FixAngle` 类提供了各种实用方法来处理定点角度,包括三角函数和角度转换。

let angle = (Double.pi / 2).fix.radToFixAngle
let sin = angle.sin
let cos = angle.cos

许可