10 个不稳定版本 (3 个破坏性更新)
0.4.0 | 2021 年 4 月 13 日 |
---|---|
0.3.0 | 2021 年 3 月 11 日 |
0.2.4 | 2020 年 6 月 4 日 |
0.2.1 | 2020 年 4 月 18 日 |
0.1.1 | 2019 年 1 月 21 日 |
#598 在 数据结构
每月 25 次下载
51KB
1K SLoC
浮动栏
此库提供了浮动栏类型,它为有理数提供了一个内存高效的表示。它基于 Inigo Quilez 的博客文章,探讨了该概念。
有关 API 和实现细节的更多信息,请参阅 库文档。
目的
几乎所有编程语言都提供了一种表示不同数值类型的方法。这些通常包括自然数 (u16
)、整数 (i32
) 和实数 (f64
)。然而,没有数值类型可以涵盖有理数。此库的目的是填补其他数值类型未涵盖的空白。
为什么使用这个而不是浮点数?
尽管浮点数通常可以很好地替代有理数,但这会因编码方式而略有精度损失。这在计算如 3/6 + 2/6 - 5/6
的表达式时立即显现,该表达式应该为零,但返回了 -1.1102230246251565e-16
,使用双精度。因此,浮点数并不总是表示有理数的最佳方式。
浮动栏数字通过以紧凑的格式存储精确的整数值来避免这个问题,而不会丢失精度。如果您的计算涉及处理分数或通常的整数除法,此库将非常适合。
为什么不使用这个而不是浮点数?
相反,这个库并不是作为浮点数的替代品,就像有理数不是实数的替代品一样。在涉及无理数(如tau、pi、e或平方根)的计算中,或者当近似结果足够好时,浮点数仍然是有益的。
话虽如此,它们并不是互相排斥的。当需要时,存在从r32
转换为f32
的方法(反之亦然)。
特性
std
(默认)
这使在需要时可以使用std
。特别是,这实现了std::error::Error
用于ParseRatioErr
。
此功能默认启用。
贡献
欢迎提交拉取请求!请随意查看GitHub上的问题列表,看看是否有可以工作的东西。您也可以提交一个您认为有用的功能的请求。
许可证
本项目采用BSD Zero Clause License许可。
依赖项
~12KB