为什么 0.1 + 0.2 会等于 0.3?

99 views
Skip to first unread message

Liutos

unread,
Feb 13, 2022, 9:58:33 AM2/13/22
to lis...@googlegroups.com
在 REPL 中试了一下,0.1 加上 0.2 会等于 0.3。

```
CL-USER> (= (+ 0.1 0.2) 0.3)
T
```

但是这三个数字在 SBCL 中都是 SINGLE-FLOAT 类型的

```
CL-USER> (type-of 0.1)
SINGLE-FLOAT
CL-USER> (type-of 0.2)
SINGLE-FLOAT
CL-USER> (type-of 0.3)
SINGLE-FLOAT
```

如果是单精度浮点数,难道不应该相加之后得到 0.30000000000000004 这样的结果么?

--
Liutos Love Linux LaTeX Lisp Ling

我的GitHub主页:https://github.com/Liutos

Nala Ginrut

unread,
Feb 13, 2022, 2:29:24 PM2/13/22
to lis...@googlegroups.com
The precise definition is implementation defined.

--
--
Lisp-cn(Lisp中文用户组)
CLUG https://lisp-cn.com
---
您收到此邮件是因为您订阅了Google网上论坛上的“Lisp-cn(Lisp中文用户组)”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到lisp-cn+u...@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/lisp-cn/CAAxQUKaKEy96_vEfD%3DZ_S3mwFPvuWcL7aXsTP37eTmn75Ork4g%40mail.gmail.com

pem

unread,
Feb 14, 2022, 1:31:37 AM2/14/22
to lisp-cn

单精度浮点数不会得到 0.30000000000000004这个高精度,这个是双精度的结果。
在0.30处,单精度浮点的精度是2.9802322e-8,双精度浮点是5.551115123125783e-17

发件人: lisp-cn
发送时间: 2022-02-14 07:47
收件人: 摘要收件人
主题: [Lisp-cn] lis...@googlegroups.com 的摘要 - “1个主题”有 2个更新

在 REPL 中试了一下,0.1 加上 0.2 会等于 0.3。
 
```
CL-USER> (= (+ 0.1 0.2) 0.3)
T
```
 
但是这三个数字在 SBCL 中都是 SINGLE-FLOAT 类型的
 
```
CL-USER> (type-of 0.1)
SINGLE-FLOAT
CL-USER> (type-of 0.2)
SINGLE-FLOAT
CL-USER> (type-of 0.3)
SINGLE-FLOAT
```
 
如果是单精度浮点数,难道不应该相加之后得到 0.30000000000000004 这样的结果么?
 
--
Liutos Love Linux LaTeX Lisp Ling
 
我的GitHub主页:https://github.com/Liutos
Nala Ginrut <nalag...@gmail.com>: Feb 14 03:29AM +0800

The precise definition is implementation defined.
 
您收到此摘要邮件是因为您订阅了此群组的最新动态。您可以在群组成员资格页面上更改设置。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到 lisp-cn+u...@googlegroups.com

Xiaofeng Yang

unread,
Feb 14, 2022, 10:27:05 AM2/14/22
to lisp-cn
建议每一个帖子一个邮件的方式进行订阅

--
--
Lisp-cn(Lisp中文用户组)
CLUG https://lisp-cn.com
---
您收到此邮件是因为您订阅了Google网上论坛上的“Lisp-cn(Lisp中文用户组)”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到lisp-cn+u...@googlegroups.com

Xiaofeng Yang

unread,
Feb 14, 2022, 10:31:26 AM2/14/22
to lisp-cn
这是为了好看选择的打印方式吧。这三个数都不是二进制可以有限数位表达的。

--
--
Lisp-cn(Lisp中文用户组)
CLUG https://lisp-cn.com
---
您收到此邮件是因为您订阅了Google网上论坛上的“Lisp-cn(Lisp中文用户组)”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到lisp-cn+u...@googlegroups.com

Liutos

unread,
Feb 15, 2022, 9:41:19 AM2/15/22
to lis...@googlegroups.com
只有0.2不行吧

Xiaofeng Yang <n.akr....@gmail.com> 于2022年2月14日周一 23:31写道:

Xiaofeng Yang

unread,
Mar 7, 2022, 1:04:49 AM3/7/22
to lisp-cn
0.1,0.2,0.3 = 1,2,3/(2*5)
5和2互质,怎么表示?

     Best regards,
Xiaofeng Yang


Reply all
Reply to author
Forward
0 new messages