打印小数在鸡计划中四舍五入
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)
我有一个计划程序 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)