如何将方案中的非精确整数转换为精确整数

问题描述 投票:0回答:1

我想在子字符串函数中使用名为 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))

我也尝试过使用exactround但我无法解决它。

floating-point scheme
1个回答
0
投票

我设法解决了它。

我将其更改为:

(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))))

我讨厌计划。

© www.soinside.com 2019 - 2024. All rights reserved.