用于将小数转换为"漂亮"分数的优化算法

ina*_*ina 5 algorithm readability decimal fractions

而不是将任意小数转换为精确分数(类似于323527/4362363),我试图转换为常见的易于辨别的(就人类可读性而言)数量,如1/2,1/4,1/8等等

除了使用一系列if-then,小于/等于等比较之外,还有更优化的技术可以做到这一点吗?

编辑:在我的特定情况下,近似值是可以接受的.我的想法是0.251243~0.25 = 1/4 - 在我的使用情况下,这是"足够好",后者在快速指示器(不用于计算,仅用作显示数字)方面更适合人类可读性.

小智 7

查找"继续分数近似".维基百科在其"连续分数"文章中有一个基本的介绍,但有一些优化的算法可以在生成分数时生成近似值.

然后选择一些停止启发式,分母的大小和近似的接近度的组合,当你"足够接近"时.


Nyl*_*ile 3

您可以使用欧几里得算法获得枚举数和分母之间的最大公约数,并将它们除以它。