Scheme 在“鸡肉方案”中,打印十进制数字会被四舍五入

Scheme 在“鸡肉方案”中,打印十进制数字会被四舍五入,scheme,chicken-scheme,Scheme,Chicken Scheme,我有一个scheme过程,结果返回0.24999999992。然而,当我试图在我的机器上用chicken scheme打印这个结果时,它被四舍五入到0.25。如何防止舍入 我尝试在repl.it上运行相同的过程,这里的print命令输出结果而不舍入 如果有帮助,请输入以下代码: (define (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (next a) next b)) ) ) (def

我有一个scheme过程,结果返回
0.24999999992
。然而,当我试图在我的机器上用chicken scheme打印这个结果时,它被四舍五入到
0.25
。如何防止舍入

我尝试在repl.it上运行相同的过程,这里的
print
命令输出结果而不舍入

如果有帮助,请输入以下代码:

(define (sum term a next b)
  (if
    (> a b)
    0
    (+ (term a) (sum term (next a) next b))
  )
)

(define (integral-simpson f a b n)
  (define h (/ (- b a) n))
  (define (inc x) (+ x 1))
  (define (term x)
    (cond
      ((or (= x 0) (= x n)) (f (+ a (* x h))))
      ((even? x) (* 2 (f (+ a (* x h)))))
      ((odd? x) (* 4 (f (+ a (* x h)))))
    )
  )

  (* (/ h 3)
    (sum
      term
      a
      inc
      n
    )
  )
)

(define (cube x)
  (* x x x)
)

(print (integral-simpson cube 0 1 100))

尝试更改:
(flonum打印精度17)

尝试更改:
(flonum打印精度17)

不打印它怎么样
integral simpson
已返回您想要的值。使用chicken 5.2为我打印
1/4
。在发布的代码中使用的所有操作都会按照标准返回精确结果,因此
integral simpson
应在输入为精确数字时返回精确结果。当我在Chez方案中测试
(积分simpson立方体01100)
时,我得到
1/4
。当我测试
(积分辛普森立方体0 1.0 100)
时,我得到
0.24999999992
@ÓscarLópez,我想打印它来验证结果。@exnihilo我尝试了
(积分辛普森立方体0 1.0 100)
(注意用1.0代替1),但这似乎对鸡肉方案也不起作用。@sjamaan works的回答不打印怎么样
integral simpson
已返回您想要的值。使用chicken 5.2为我打印
1/4
。在发布的代码中使用的所有操作都会按照标准返回精确结果,因此
integral simpson
应在输入为精确数字时返回精确结果。当我在Chez方案中测试
(积分simpson立方体01100)
时,我得到
1/4
。当我测试
(积分辛普森立方体0 1.0 100)
时,我得到
0.24999999992
@ÓscarLópez,我想打印它来验证结果。@exnihilo我尝试了
(积分辛普森立方体0 1.0 100)
(注意用1.0代替1),但这似乎对鸡肉方案也不起作用。来自@sjamanworks的回答