如何在Racket中将实数转换为精确整数?

时间:2016-02-13 14:22:15

标签: scheme racket

如何将20.2形式的值转换为(random ...)接受的内容?

我试过这些:

;; x defined by some earlier maths and of form 20.2

(random (round x))
(random (floor x))

但两人都回归:

random: contract violation
expected: (or/c (integer-in 1 4294967087) pseudo-random-generator?)
given: 20.0

2 个答案:

答案 0 :(得分:7)

这些也有效,根据documentation,他们只是你方法的缩写:

(random (exact-round x))
(random (exact-floor x))

答案 1 :(得分:0)

本文似乎回答了Scheme的问题: http://computer-programming-forum.com/40-scheme/674db7a1706960d5.htm

所以使用这样的代码,我得到了我想要的结果:

(random (inexact->exact (round x)))
(random (inexact->exact (floor x)))

这是最简单的方法吗?