我想在子字符串函数中使用名为 split_point 的变量。我使用这些函数计算了分割点:
(list (substring num 0 split_point) (substring num split_point))
(define (log_2 decimal)
(floor(/ (log decimal) (log 2))))
(define (find_size_in_byte num)
(floor (+ 10 (log_2 num))))
当我尝试在子字符串中使用 split_point 变量时,出现错误: 子串:违反合同 预期:精确非负整数? 给定:2.0
我尝试在代码中使用 **floor **: `
(list (substring num 0 split_point) (substring num split_point))
我也尝试过使用exact和round但我无法解决它。
我设法解决了它。
我将其更改为:
(define (log_2 decimal)
(floor(/ (log decimal) (log 2))))
(define (find_size_in_byte num)
(floor (+ 10 (log_2 num))))
至:
(define (log_2 decimal)
(inexact->exact (/ (log decimal) (log 2))))
(define (find_size_in_byte num)
(inexact->exact (+ 10 (log_2 num))))
我讨厌计划。