#rational-numbers #rational #floating #bar #float

无 std floating_bar

使用浮动栏数字类型表示有理数

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 次下载

0BSD 许可证

51KB
1K SLoC

浮动栏

此库提供了浮动栏类型,它为有理数提供了一个内存高效的表示。它基于 Inigo Quilez 的博客文章,探讨了该概念

有关 API 和实现细节的更多信息,请参阅 库文档

目的

几乎所有编程语言都提供了一种表示不同数值类型的方法。这些通常包括自然数 (u16)、整数 (i32) 和实数 (f64)。然而,没有数值类型可以涵盖有理数。此库的目的是填补其他数值类型未涵盖的空白。

为什么使用这个而不是浮点数?

尽管浮点数通常可以很好地替代有理数,但这会因编码方式而略有精度损失。这在计算如 3/6 + 2/6 - 5/6 的表达式时立即显现,该表达式应该为零,但返回了 -1.1102230246251565e-16,使用双精度。因此,浮点数并不总是表示有理数的最佳方式。

浮动栏数字通过以紧凑的格式存储精确的整数值来避免这个问题,而不会丢失精度。如果您的计算涉及处理分数或通常的整数除法,此库将非常适合。

为什么不使用这个而不是浮点数?

相反,这个库并不是作为浮点数的替代品,就像有理数不是实数的替代品一样。在涉及无理数(如taupie或平方根)的计算中,或者当近似结果足够好时,浮点数仍然是有益的。

话虽如此,它们并不是互相排斥的。当需要时,存在从r32转换为f32的方法(反之亦然)。

特性

std(默认)

这使在需要时可以使用std。特别是,这实现了std::error::Error用于ParseRatioErr

此功能默认启用。

贡献

欢迎提交拉取请求!请随意查看GitHub上的问题列表,看看是否有可以工作的东西。您也可以提交一个您认为有用的功能的请求。

许可证

本项目采用BSD Zero Clause License许可。

依赖项

~12KB