Scheme 在“鸡肉方案”中,打印十进制数字会被四舍五入
我有一个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
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的回答