- 主题:大佬解释一下,为何0.1+0.2的结果比0.3大?
a=0.1
b=0.2
c=a+b
print(c)
竟然输出 0.30000000000000004,比 0.3大?是为什么?十进制小数存储的时候,不是截断吗?位数多了,就截断。而截断是越截越小啊。怎么会变大呢?谢谢
--
FROM 120.242.238.*
小数咱不比大小行吗?
你可以认为小数都是近似值,差不多就行了。
别在小数上较真。
【 在 feng321 的大作中提到: 】
: a=0.1
: b=0.2
: c=a+b
: ...................
--
FROM 221.216.197.*
计算机,都是有道理的啊。
【 在 seablue 的大作中提到: 】
: 小数咱不比大小行吗?
: 你可以认为小数都是近似值,差不多就行了。
: 别在小数上较真。
: ...................
--
FROM 120.242.238.*
二进制里0.1 0.2不短
【 在 feng321 的大作中提到: 】
: 计算机,都是有道理的啊。
--
FROM 121.33.161.*
浮点数的截断不是你想的越截越小
//下面是我上学年代的记忆,不太保真,建议自己查网上的科普文章
以32位浮点数为例,分为3段:
第一段是第一个bit,0或者1,表示正负数sign
第二段是第2-9总计8 bit,表示底数base,这个东西要1<=base<2
第三段是第10-32总计23 bit,表示指数exp
那么这个浮点数实际代表的数值是sign * base * 2 ^ exp
至于怎么用浮点数凑出来0.1感觉就复杂了。。
【 在 feng321 的大作中提到: 】
: a=0.1
: b=0.2
: c=a+b
: ...................
--
FROM 103.102.203.205
【 在 feng321 的大作中提到: 】
: a=0.1
: b=0.2
: c=a+b
: ...................
不懂的话, 找一本教程好好学习
或者问知乎, 太基础的问题, 勤快点就不是问题
https://zhuanlan.zhihu.com/p/580191161
--
FROM 124.126.2.*
0.1不是0.1,0.2不是0.2,0.3不是0.3
【 在 feng321 的大作中提到: 】
: a=0.1
: b=0.2
: c=a+b
: ...................
--
FROM 183.156.105.*
计算机处理浮点数都是近似,这是基础知识。
【 在 feng321 的大作中提到: 】
: 计算机,都是有道理的啊。
--
FROM 221.216.197.*
只会提问,不会寻找答案,这不是一个好的学习者。
不过已经比不会提问的人强多了。
【 在 feng321 的大作中提到: 】
: a=0.1
: b=0.2
: c=a+b
: print(c)
: 竟然输出 0.30000000000000004,比 0.3大?是为什么?十进制小数存储的时候,不是截断吗?位数多了,就截断。而截断是越截越小啊。怎么会变大呢?谢谢
--
FROM 27.38.197.*