Vector (方案)从数字中去掉小数(即42.0->;42)
我有一个700000大小的向量,里面全是零。我正在尝试将索引中的值更改为1。我通过计算得到指数。代码如下:Vector (方案)从数字中去掉小数(即42.0->;42),vector,scheme,decimal,racket,Vector,Scheme,Decimal,Racket,我有一个700000大小的向量,里面全是零。我正在尝试将索引中的值更改为1。我通过计算得到指数。代码如下: #lang racket ; Make bitvector (define bitvector (make-vector 700000 0)) ; Fill indices (define fillvector (lambda (hashlist dict) (cond [(null? hashlist) (cdr dict)] [(null? dict
#lang racket
; Make bitvector
(define bitvector (make-vector 700000 0))
; Fill indices
(define fillvector
(lambda (hashlist dict)
(cond [(null? hashlist) (cdr dict)]
[(null? dict) '()]
[else (vector-set! bitvector ((car hashlist) (car dict)) 1) (fillvector (cdr hashlist) dict)]
)
))
我像这样调用fillvector
(fillvector hashfl-1字典)<代码>字典是一组单词:
(define dictionary '( (h e l l o)
(w a y)
(r a i n b o w) ))
我在运行该命令后出现此错误:
vector-set!: contract violation
expected: exact-nonnegative-integer?
given: 415458.0
argument position: 2nd
other arguments...:
'#(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
1
我相信这个错误是因为乘法方法可以返回一个十进制值(尽管我确保它总是.0)。还有什么我能做的吗?任何帮助都将不胜感激,谢谢 将浮点数(“不精确”)转换为非浮点数(“精确”)的过程是
不精确->精确
(或R6RS和R7RS中的精确
)
> (inexact->exact 415458.0)
415458