#fixed #fixed-point #compile-time #point #fixedpoint

fix32

在Rust中轻松实现定点数,使用i32作为基数。小数位数应在编译时配置,以便在最大程度上优化代码。这是一个个人项目,旨在保持其清晰和易于理解。任何人都可以提交改进或额外特性,但所有这些都必须清楚地解释给非专业人士。我不会添加我不理解的任何代码。

1 个稳定版本

1.1.2 2020年1月31日

#36 in #fixed-point

GPL-3.0-only

17KB
272

Fix32 V1.1

在Rust中轻松实现定点数,使用i32作为基数。小数位数应在编译时配置,以便在最大程度上优化代码。这是一个个人项目,旨在保持其清晰和易于理解。任何人都可以提交改进或额外特性,但所有这些都必须清楚地解释给非专业人士。我不会添加我不理解的任何代码。

关于内部数学的考虑

所有将浮点类型转换为整型的操作都将截断值而不是四舍五入。

关于版本号的考虑

版本号中的主要数字将锁定它所具有的所有功能和工作。次要版本号将意味着对代码或错误更正的改进,但不会有新功能。

功能

V1

  • 基于i32的定点数结构
  • 从基本类型(i32、i64、f32、f64)创建,具有0值并直接设置内部i32值。
  • 以基本类型和String获取值。
  • 基本运算符重载:(+、-、*、/、% 和比较运算符)
  • 基本数学函数
    • 获取余数为i32。
    • 截断内部小数(改变自身值)
    • 获取绝对值。
    • 获取2、3或任何其他正整数的幂。

V2

  • 基于查找表的sin、cos和tan函数。
  • 在单独的文件/模块中有更多有用的数字常量。
  • sqrt 函数(仅使用整数值工作的算法)。
  • 开始添加2D几何函数集(新模块)。
  • 添加更多测试用例。
  • 编写基本文档

待办事项

下一个版本的功能

  • 基于查找表的sin、cos和tan函数。
  • 在单独的文件/模块中有更多有用的数字常量。
  • sqrt 函数(仅使用整数值工作的算法)。
  • 开始添加2D几何函数集(新模块)。
  • 添加更多测试用例。
  • 编写基本文档

通用

  • 找到一种方法在编译时调整小数位数。在Rust中是否可能?
  • 使用Cargo Doc对代码注释进行文档化。
  • 为一切编写更多测试。
  • 考虑一个基准测试系统来检测性能问题。

辅助函数

  • (无)

错误、风险和限制

  • 在制作幂函数或多次乘法时,如果操作数是具有许多小数的小数,则可能存在舍入误差。可能无法避免,而不会大幅降低性能。
  • 拼写检查 ;)

许可证

本软件根据许可证GPL-3.0-only授权。

版权所有 Joseba Martinez 2020 ([email protected])。

无运行时依赖项