在 Scheme 中,我如何将一个精确的(有理的)数字分成被除数和除数?
Posted
技术标签:
【中文标题】在 Scheme 中,我如何将一个精确的(有理的)数字分成被除数和除数?【英文标题】:In Scheme how can I split an exact (rational) number into dividend and divisor? 【发布时间】:2014-04-18 07:43:17 【问题描述】:我正在寻找的功能是这样的:
(split 1/3) => (1 . 3)
(split 1093/209) => (1093 . 209)
是否可以在 RnRS、SRFI 或任何自定义实现中实现?
【问题讨论】:
【参考方案1】:是的。要获得有理数的分子和分母,您可以使用两个程序:
(numerator (/ 6 4)) ⇒ 3
(denominator (/ 6 4)) ⇒ 2
因为它表明返回的值是最低的术语。 The report指定分母始终为正,0的分母定义为1。
这种行为已经很长时间没有改变了。我在 R3RS 中看到了相同的描述,直到最新的 R7RS,所以你可以期望它存在于今天存在的所有 Scheme 实现中。
只是为了好玩:
(define (split number)
(cons (numerator number)
(denominator number)))
【讨论】:
以上是关于在 Scheme 中,我如何将一个精确的(有理的)数字分成被除数和除数?的主要内容,如果未能解决你的问题,请参考以下文章