- 主题:大佬解释一下,为何0.1+0.2的结果比0.3大?
学一下十进制到二进制的计算方法
【 在 feng321 的大作中提到: 】
: 问题是,0.1+0.2 为什么是等于 0.30000000000000004?
: 不是0.3000000000000004?
: 也不是 0.300000000000000004?
: ...................
--
FROM 111.16.87.*
这个问题你很久以前讨论过,回复里不是有解决方案吗?
https://www.mysmth.net/nForum/article/Python/162611?s=162611
【 在 feng321 的大作中提到: 】
: a=0.1
: b=0.2
: c=a+b
: ...................
--
FROM 111.36.200.*
这个帖子,根本没说清楚。
问题是,0.1+0.2 为什么是等于 0.30000000000000004?
不是0.3000000000000004?
也不是 0.300000000000000004?
而且为什么是4?不是其他9个数字中的一个?
我试着用 float32算了一下,结果不理想。难道python里存储小数,都是用double 64位吗?
【 在 pixYY 的大作中提到: 】
: 这个问题你很久以前讨论过,回复里不是有解决方案吗?
:
:
https://www.mysmth.net/nForum/article/Python/162611?s=162611: ...................
--
修改:feng321 FROM 120.242.238.*
FROM 120.242.238.*
合着我之前说的你没看呐。
你就无法跟计算机精确表达 0.1。
要不你找个尺子,给我精确量出个 1/9 厘米来。
不要跟我说什么除不尽,9 进制计算机中 1/9 就是个一位小数,也可以写作 0.1
【 在 feng321 的大作中提到: 】
: 这个帖子,根本没说清楚。
: 问题是,0.1+0.2 为什么是等于 0.30000000000000004?
: 不是0.3000000000000004?
: 也不是 0.300000000000000004?
: 而且为什么是4?不是其他9个数字中的一个?
: 我试着用 float32算了一下,结果不理想。难道python里存储小数,都是用double 64位吗?
--
FROM 27.38.228.*
看了,也没用。我现在就想搞清楚,0.1+0.2是如何等于0.3000000...0004的。具体的计算过程是怎么样的?你说了 吗?
【 在 flw 的大作中提到: 】
: 合着我之前说的你没看呐。
: 你就无法跟计算机精确表达 0.1。
: 要不你找个尺子,给我精确量出个 1/9 厘米来。
: ...................
--
FROM 120.242.238.*
0.1000000000000000000001 + 0.200000000000000000003 = 0.30000000000000000004
对你来说很难理解吗?
你可能会说,你的算式不长这样。
但我告诉你那只是你的一厢情愿,想当然,自以为是。
其实对计算机来说,你的算式就长那样。
【 在 feng321 的大作中提到: 】
: 看了,也没用。我现在就想搞清楚,0.1+0.2是如何等于0.3000000...0004的。具体的计算过程是怎么样的?你说了 吗?
--
修改:flw FROM 27.38.228.*
FROM 27.38.228.*
小数部分最后怎么会有一个4,这个是属于未定义的,也就是说是由各个语言自己去处理,无论是在4之前就截断还是把4换成其它数字都是合法的。
所以我们一般都不追究这个细节是怎么处理的,绕开就行了。总之你知道实数在计算机里不可能精确表示就是了。至于怎么个模糊、近似表示法,你可以去查python语言关于浮点数部分是怎么实现的。
【 在 feng321 的大作中提到: 】
: 看了,也没用。我现在就想搞清楚,0.1+0.2是如何等于0.3000000...0004的。具体的计算过程是怎么样的?你说了 吗?
--
修改:seablue FROM 221.216.197.*
FROM 221.216.197.*
你错了,浮点数是可以精确表示的。
不可以精确表示的是一部分十进制字面量。
【 在 seablue 的大作中提到: 】
: 小数部分最后怎么会有一个4,这个是属于未定义的,也就是说是由各个语言自己去处理,无论是在4之前就截断还是把4换成其它数字都是合法的。
: 所以我们一般都不追究这个细节是怎么处理的,绕开就行了。总之你知道浮点数在计算机里不可能精确表示就是了。至于怎么个模糊、近似表示法,你可以去查python语言关于浮点数部分是怎么实现的。
--
FROM 27.38.228.*
我说的是精度。精度是有限状态,而实数中的小数部分可能是无限的,所以在计算机里用浮点数表示小数部分需要确定一个精度去近似表示。
【 在 flw 的大作中提到: 】
: 你错了,浮点数是可以精确表示的。
: 不可以精确表示的是一部分十进制字面量。
--
修改:seablue FROM 221.216.197.*
FROM 221.216.197.*
浮点数为什么是无限的?
浮点数当然是有限的呀。
无限的是有理数。
sorry, 刚才不小心把回复点成编辑了。
不过我没有修改你的内容。
【 在 seablue 的大作中提到: 】
: 我说的是精度。精度是有限状态,而浮点数可能是无限的,所以在计算机里需要确定一个精度去近似表示。
--
修改:flw FROM 27.38.228.*
FROM 27.38.228.*