Как я могу получить точное целое число из числа с плавающей запятой? - PullRequest
2 голосов
/ 07 января 2011

Мне нужно использовать функцию random с целочисленным аргументом, который я получаю из операций, которые теоретически могут возвращать double. Так что я хочу использовать некоторые броски / раунды для этой цели. Я пробовал

(random (round 10.0))
(random (floor 10.0))

Но он выдает исключения, такие как

random: expects argument of type <exact integer in [1, 4294967087] or pseudo-random-generator>; given 10.0

Я использую DrRacket в качестве переводчика.

1 Ответ

2 голосов
/ 07 января 2011

Попробуйте (random (floor->exact 10.0)) или (random (inexact->exact (round 10.0))))

Вы можете использовать любое из округлений (напольное / круглое / усеченное / потолочное).

Это обсуждается здесь: http://web.mit.edu/scheme_v9.0.1/doc/mit-scheme-ref/Numerical-operations.html (поиск "неточно-> точный")

...