为什么 python3 出现这样的加法结果 0.4 +0.8 =1.2000000000000002

2018-09-15 16:59:09 +08:00
 wzw
大家在 python 3.6 中试试 print(0.4 + 0.8)

为什么会这样?
3566 次点击
所在节点    问与答
9 条回复
windfarer
2018-09-15 17:01:27 +08:00
xupefei
2018-09-15 17:03:28 +08:00
cabbage
2018-09-15 17:03:39 +08:00
你可以试试,所有编程语言包括 js 都是这样的(浮点类)
n2ex2
2018-09-15 17:04:49 +08:00
周经了
MonoLogueChi
2018-09-15 17:11:35 +08:00
应该是因为浮点运算的原因,二进制无法准确表示十进制小数。十进制小数转换成二进制,然后再转换成十进制,就会有一定的误差,这个误差大小是根据你的精度确定的,比如你用双精度,转换之后中间的 0 要比用单精度多。
结果是 1.2000000000000000002 还是 1.199999999999999998,要看你对于进制转换是怎么取舍的。
jingniao
2018-09-15 19:46:18 +08:00
从我注册这站,这第几次了?
感觉可以出个集合贴了(≧▽≦)
zn
2018-09-15 20:12:46 +08:00
这位同学还是得多学习点姿势才行。
fayloue
2018-09-15 20:18:25 +08:00
浮点误差,excel 也经常这样
Tompes
2018-09-16 12:36:17 +08:00
浮点运算都是不准确的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/489641

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX