鱼C论坛

 找回密码
 立即注册
查看: 1210|回复: 4

[已解决]sum函数的使用问题

[复制链接]
发表于 2022-1-27 21:13:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
tuple2 = (3.1,2.3,3.4)
>>> sum(tuple2)
8.8
>>> sum(tuple2,10)
18.799999999999997
>>> list1=[3.1,2.3,3.4]
>>> sum(list1)
8.8
>>> sum(list1,10)
18.799999999999997

以上是idle中的结果,想请教各位大神, 为什么sum函数中求和后再与第二个参数相加,结果不是18.8而是18.799999999999997呢?求助各路大神!~
最佳答案
2022-1-27 21:35:49
浮点数运算的精度丢失问题,你可以不管它,感兴趣的话可以搜一下这方面的内容
sum([3.1, 2.3, 3.4], 10)相当于10 + 3.1 + 2.3 + 3.4
你用10 + 3.1 + 2.3 + 3.4结果也是18.799999999999997的,
3.1 + 2.3 + 3.4 + 10结果又是另一种,你可以试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-27 21:35:49 | 显示全部楼层    本楼为最佳答案   
浮点数运算的精度丢失问题,你可以不管它,感兴趣的话可以搜一下这方面的内容
sum([3.1, 2.3, 3.4], 10)相当于10 + 3.1 + 2.3 + 3.4
你用10 + 3.1 + 2.3 + 3.4结果也是18.799999999999997的,
3.1 + 2.3 + 3.4 + 10结果又是另一种,你可以试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-29 17:05:49 | 显示全部楼层
isdkz 发表于 2022-1-27 21:35
浮点数运算的精度丢失问题,你可以不管它,感兴趣的话可以搜一下这方面的内容
sum([3.1, 2.3, 3.4], 10)相 ...

感谢大佬解答!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-29 17:28:34 | 显示全部楼层
isdkz 发表于 2022-1-27 21:35
浮点数运算的精度丢失问题,你可以不管它,感兴趣的话可以搜一下这方面的内容
sum([3.1, 2.3, 3.4], 10)相 ...

那请问大神:浮点数转换为二进制时已经出现了精度丢失,我搜索了一下可以使用Decimal避免。那为什么这个例子中最后加10 就没有这个问题了呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-29 17:43:33 | 显示全部楼层
之前计算机组成原理的课的时候老师好像有说过只有浮点数和浮点数运算才有可能会发生精度丢失的,至于原因是什么我有点忘了,你可以自己找一下
加法运算是从前面往后面算的,3.1 + 2.3 + 3.4 没有发生精度丢失,自然它们的结果与10(一个整数)相加肯定是不会发生精度丢失的
10 + 3.1 + 2.3 + 3.4 是在 13.1 + 2.3 的时候发生的精度丢失
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 10:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表