6个版本
0.1.5 | 2020年3月6日 |
---|---|
0.1.4 | 2019年4月22日 |
0.1.1 | 2019年3月30日 |
0.1.0 | 2018年10月24日 |
#848 在 算法 中排名
每月108 次下载
在 5 个crate 中使用
12KB
213 行
SWF Fixed
SWF定点数Rust库。
定点数使用均匀分布的位模式表示十进制值(与浮点数相反,浮点数在接近零时密度增加)。
定点数可以简单地理解为常数除以一个整数值。它由整数部分和小数部分组成:其数学值是 整数部分 + 小数部分 / 2^小数位数
。
例如,类型 Ufixed8p8
是一个无符号定点数,具有8位整数部分和8位小数部分。它可以表示 u16 / 256
对应的 2^16 个值,每个值之间的间隔(epsilon)是 1 / 256
。
此crate定义了SWF文件中使用的定点数
名称 | 整数部分 | 小数部分 | 最小值 | 最大值 | epsilon |
---|---|---|---|---|---|
Sfixed8P8 | i8 |
u8 |
-128 | 128 - 1/256 | 1 / 256 |
Ufixed8P8 | u8 |
u8 |
0 | 256 - 1/256 | 1 / 256 |
Sfixed16P16 | i16 |
u16 |
-2^15 | 2^15 - 1/2^16 | 1 / 2^16 |
Ufixed16P16 | u16 |
u16 |
0 | 2^16 - 1/2^16 | 1 / 2^16 |
用法
use swf_fixed::Sfixed8P8;
fn main() {
let a = Sfixed8P8::from_epsilons(256);
let b = Sfixed8P8::from_value(1f32);
assert_eq!(a, b);
let sum: Sfixed8P8 = (a + b);
let sum_value: f32 = sum.into();
assert_eq!(sum_value, 2.0f32);
}
贡献
此库是标准的Cargo项目。您可以使用 cargo test
测试您的更改。
在发送PR时请优先考虑非master
分支,以便在需要时可以重新合并您的更改。所有提交都必须在 master
上进行(快速合并)。更改必须通过CI才能被接受。
依赖项
~110–345KB