1 个稳定版本
1.1.2 | 2020年1月31日 |
---|
#36 in #fixed-point
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])。