2个不稳定版本
0.1.0 | 2023年12月11日 |
---|---|
0.0.2 | 2023年1月18日 |
0.0.1 |
|
5 在 #i128
每月 98 次下载
19KB
354 行
已废弃
此包已被废弃,并改用 https://crates.io/crates/soroban-fixed-point-math,不再维护。最后支持的版本是 0.0.2
。
如果您想使用这个crate名称,请给我发邮件(在Cargo.toml
中列出)
旧的README
定点数学
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许可证发布。