打印小数在鸡计划中四舍五入

Printing decimal numbers get rounded up in chicken-scheme

我有一个计划程序 returns 0.24999999999999992 作为结果。然而,当我尝试在我的机器上使用 chicken-scheme print 这个结果时,它四舍五入为 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))

尝试更改 print precision(flonum-print-precision 17)