1 个不稳定版本
0.0.2 | 2023年10月16日 |
---|
#628 in WebAssembly
18KB
353 行
fixed-point-math
这是一个轻量级的固定点数学库,专为 Rust 编写。特别适用于在 Soroban 和其他基于 WASM 的区块链环境中使用。
安全性
这是一个**实验性软件**,按照“现状”和“可用性”提供。
我们不提供任何保证,并且不会对任何通过使用此代码库产生的损失负责。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
fixed-point-math = "<desired version>"
示例
固定点数学支持目前添加到 i128
和 u64
类型。对于任何支持的数字,您可以执行如下固定点操作
use fixed_point_math::{STROOP, FixedPoint};
let x: u64 = 1_5000000;
let y: u64 = 2_0000000;
assert_eq!(x.fixed_mul_floor(y, STROOP).unwrap(), 3_0000000);
溢出
溢出结果的处理方式与 Rust 内置的“checked”数学相同,通过返回 None
。
固定点数学还处理幽灵溢出,其中中间计算溢出,但预期结果会在范围内。此库针对每个支持的类型以不同的方式管理这种情况
- i128
- 没有进行额外的处理。
i128
足够大,可以支持大多数带有 7/9 位小数的计算。然而,18 位小数的数学可能会遇到溢出。
- 没有进行额外的处理。
- u64
- 中间计算被缩放到
u128
,然后再次尝试。
- 中间计算被缩放到
致谢
此库受到了许多来源的启发或直接修改,主要是
WASM
支持 WASM 目标 wasm32-unknown-unknown
。
贡献
欢迎贡献。请查看贡献指南(待定)!
许可证
此库在 MIT 许可证 下发布。