- 主题:大佬解释一下,为何0.1+0.2的结果比0.3大?
别的语言可能是截断了,它的比较仍然是近似的。
【 在 pNeo 的大作中提到: 】
: 这么多评论都在搞笑吗?这么简单的计算给不对,这就是bug,为什么要解释其合理性?别的语言怎么不错
--
FROM 221.216.197.*
只能说是python的特性。用Decimal就不会出这问题。至于为什么比0.3大,我忘记把内存中存储的精确值粘贴出来了,不过那个网站上有
【 在 pNeo 的大作中提到: 】
: 这么多评论都在搞笑吗?这么简单的计算给不对,这就是bug,为什么要解释其合理性?别的语言怎么不错
--
FROM 36.63.121.*
是截断的长度不同。
浮点数不能精确表示,都是近似。
【 在 feng321 的大作中提到: 】
: 只能说是python的特性。用Decimal就不会出这问题。至于为什么比0.3大,我忘记把内存中存储的精确值粘贴出来了,不过那个网站上有
--
FROM 221.216.197.*
内存中存储的都是精确值,比如0.1存储的是 0.100000056824,我给的网站上有
【 在 seablue 的大作中提到: 】
: 是截断的长度不同。
: 浮点数不能精确表示,都是近似。
:
--
FROM 36.63.121.*
浮点数,不同计算路径,结果不同
这不是基本常识么?
【 在 feng321 的大作中提到: 】
: a=0.1
: b=0.2
: c=a+b
: print(c)
: 竟然输出 0.30000000000000004,比 0.3大?是为什么?十进制小数存储的时候,不是截断吗?位数多了,就截断。而截断是越截越小啊。怎么会变大呢?谢谢
: --
:
发自「今日水木 on LIO-AN00」
--
FROM 101.82.61.156
按朴素观点,0.3到0.30000000000004之间的实数无穷多,但是计算机除了后面那个,一个都表示不了
【 在 feng321 (sfdf) 的大作中提到: 】
: 发信人: feng321 (sfdf), 信区: Python
: 标 题: 大佬解释一下,为何0.1+0.2的结果比0.3大?
: 发信站: 水木社区 (Tue Nov 7 16:40:14 2023), 转信
:
--
FROM 36.18.172.*
浮点数不精确,所以不要直接比大小, 可以用 a + b - c < 1e-6 来判断 a + b == c
--
FROM 1.203.66.*
问题是,0.1+0.2 为什么是等于 0.30000000000000004?
不是0.3000000000000004?
也不是 0.300000000000000004?
而且为什么是4?不是其他9给数字?
【 在 anotherstone 的大作中提到: 】
: 浮点数,不同计算路径,结果不同
: 这不是基本常识么?
: 发自「今日水木 on LIO-AN00」
--
FROM 120.242.238.*
首先,你就没法跟计算机说 0.1。
所以这只能是你心里想,你一说出来,意思就变了,也就休怪计算机给你算错了。
【 在 feng321 的大作中提到: 】
: 问题是,0.1+0.2 为什么是等于 0.30000000000000004?
: 不是0.3000000000000004?
: 也不是 0.300000000000000004?
: 而且为什么是4?不是其他9给数字?
--
FROM 27.38.228.*
因为计算不是10进制的,是二进制
【 在 feng321 的大作中提到: 】
: 问题是,0.1+0.2 为什么是等于 0.30000000000000004?
: 不是0.3000000000000004?
: 也不是 0.300000000000000004?
: ...................
--
FROM 121.33.161.*