【发布时间】:2012-11-04 20:38:49
【问题描述】:
我想在 Java 中采用任意浮点数或双精度数并将其转换为有理数 - 即。 a/b 形式的数字,其中 a 和 b 是长整数。我怎样才能以合理有效的方式做到这一点?
(顺便说一句 - 我已经有了简化分数的代码,所以 a/b 是否是最简单的形式并不重要)。
【问题讨论】:
-
如果你被传递一个无理数怎么办?即,不能表示为
a/b的数字 -
@Doug Ramsey - 计算机并没有真正的无理数。如果给你一个浮点数或双精度数,这是合理的。
-
我“相当肯定”有现有的库可以做到这一点。此外,为该过程找到与语言无关(或以另一种语言实现)的算法应该不会太难。
-
我在这里的回答为您定义的精度提供了最简单的形式stackoverflow.com/questions/5968636/… 这是它将 PI 转换为不同精度级别的示例。
-
彼得,很有趣——但这真的有效吗?好像不会。
标签: java floating-point rational-numbers