用于人类可读分数单位的Boost库
Boost library for human-readable fractional units
是否有boost库支持我们将doubles
转换为(美国式)分数单位,即转换
- 从(双)2.56
- 到(字符串)'2 5/9'
用例是向用户显示小数,同时在内部保留双重表示。分数表示很可能是精确内部值的近似值。
Boost似乎已经考虑到了这个问题,并决定不实施它。
我引用了boost::rational的文档
该库不提供从浮点到有理的转换函数。收到了许多关于这种转换的请求,但对助推名单的广泛讨论得出的结论是;最佳解决方案";解决问题。由于库的用户没有理由不能编写适合其特定要求的自己的转换函数,因此决定不选择任何一种算法作为"转换函数";标准";…
所有这些都意味着我们应该寻找某种形式的";最接近的简单分数";。确实存在确定这类值的算法。然而,并不是所有的应用程序都希望这样工作…
对于这些相互冲突的需求,显然没有一个单一的解决方案能够满足所有用户。此外,所涉及的算法相对复杂且专业,最好在充分了解应用程序需求的情况下实现。所有这些因素都使得这样的函数不适合这样的通用库。
GP/Pari确实实现了bestappr(X, B)
函数,该函数(在其一个化身中)返回分母小于B
的X
的最佳有理逼近。(感谢@SLeske对指针类似问题的回答。)
谷歌搜索";实数的有理逼近";产生了许多其他链接,包括Emilie Charriera和Lilian Buzera的这篇非付费论文(并为离散应用数学允许开放访问而欢呼三声)
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost.units中单位的转换因子
- 在 boost::multi_array 中以字节为单位表示步幅
- 用于人类可读分数单位的Boost库
- 如何从boost::timer::cpu_timer获取以秒为单位的运行时间
- 使用Boost.单位和boost .多精度
- 如何使用boost::units添加自己的基本单位和转换
- 使用Boost时,以秒为单位的运行时间
- 如何使用boost Date_time获取以毫秒为单位的GMT时间
- 将时间戳(以毫秒为单位)转换为boost中的时区