gpt4 book ai didi

floating-point - 方案中的浮点精度和去除舍入误差

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:38 24 4
gpt4 key购买 nike

我有一个将 float 返回到小数点后三位的过程。

>(gpa ’(A A+ B+ B))
3.665

在 Scheme 中有什么方法可以将其四舍五入为 3.67 吗?

我正在使用 SCM带有 Slib 3b3 的版本 5e7,额外的 Simply Scheme libraries (simply.scm, functions.scm, ttt.scm, match.scm, database.scm) 和我用的答案库loaded。

顺便说一句,我今天早上把这个输入我的电脑

> (* 1 (- 0.5 0.4 0.1))
-27.755575615628913e-18

不不不不!

您如何处理这种不准确的情况?

最佳答案

尝试

(define (round-off z n)
(let ((power (expt 10 n)))
(/ (round (* power z)) power)))

> (round-off 3.665 2)
3.66
> (round-off 3.6677 2)
3.67

注意 3.665 四舍五入为 3.66,而不是 3.67。 (偶数向下舍入;赔率向上舍入)

关于第二个问题。使用确切的数字:

> (* 1 (- #e0.5 #e0.4 #e0.1))
0

> #e0.5
1/2

关于floating-point - 方案中的浮点精度和去除舍入误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16302038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com