2013-04-04 4 views
0

Я хочу функцию number->second-pair, которая принимает число и возвращает пару целого числа, представляющим его целая часть & дробной части размноженной с 1000000.Как разделить числа на целую и дробную часть в схеме?

т.е.

(number->second-pair 1) 
; returns (1 . 0) 
; 1 sec -> (1 sec + 0 usec) 
(number->second-pair 5.1234) 
; returns (5 . 123400) 
; 5.1234 sec -> (5 sec + 123400 usec) 

Это может быть легко для вас, чтобы найти но я искал много документов и, к сожалению, не могу найти способ преобразования чисел в целые числа. Кто-нибудь может мне помочь?

КСТАТИ:

На самом деле я хочу preciser alarm (this one) путем использования setitimer, поэтому я хочу точные целые числа, передаваемые в качестве аргументов.

ответ

2

Может быть, я немного ржавый со схемой, но я думаю, что что-то подобное будет работать для вас,

(define (number->second-pair n) 
    (cons (inexact->exact (floor n)) 
      (inexact->exact (floor (* 1000000 (- n (floor n))))))) 

(number->second-pair 5.1234) возвращает (5 . 123400)

(number->second-pair 1) возвращает (1 . 0)

+0

именно то, что я хочу, спасибо:) – Javran

Смежные вопросы