【发布时间】:2011-01-13 03:19:37
【问题描述】:
我没有将任意小数转换为精确分数(例如 323527/4362363),而是尝试转换为常见的易于识别(就人类可读性而言)的数量,例如 1/2、1/4、 1/8 等。
除了使用一系列 if-then、小于/等于等比较之外,还有更优化的技术可以做到这一点吗?
编辑:在我的特殊情况下,近似值是可以接受的。这个想法是 0.251243 ~ 0.25 = 1/4 - 在我的用例中,这“足够好”,就快速指标而言,后者更适合人类可读性(不用于计算,仅用作显示数字)。
【问题讨论】:
-
您的问题含糊不清。你如何定义人类可读性?更重要的是,如果没有人类可读的等效形式怎么办?你允许近似值吗?我个人认为没有任何简单的方法可以在不求助于近似值的情况下以人类可读的形式编写示例 323526/4362363。
-
近似值是可以接受的 - 4 位小数精度已经足够了
-
“人类可读”还有其他的东西,只是两个数字的长度。一般来说,“1/x”形式的分数是easy,但“4/85”很奇怪,最好用“1/41”表示。当然,“1/x”系列只适用于小于 0.5 的数字,而使用 0.4 的近似值意味着很大的损失……也许百分比表示就足够了?
-
(整数) + x/y 其中 x 和 y 均小于 10
标签: algorithm decimal readability fractions