找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 158|回复: 6

[已解决] 这是咋回事呢

1

主题

4

帖子

4

积分

贫民

积分
4
Refee 发表于 2017-11-19 10:19:57 | 显示全部楼层 |阅读模式
昨天刚刚装好python3.6.3,迫不及待地玩了一下,结果发现如下现象,请各位大侠看看是咋回事: pic.jpg
回复

使用道具 举报

1

主题

116

帖子

116

积分

版主

Rank: 7Rank: 7Rank: 7

积分
116

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-11-20 08:43:36 | 显示全部楼层
round(2.2*2 + 12.8, 2)浮点型加减法误差,这是二进制计算机的误差,是正常的,四舍五入一下就好了
回复 支持 1 反对 0

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
Refee  楼主| 发表于 2017-11-19 11:14:59 | 显示全部楼层
卸载3.6.3的64位版重新安装32位版,问题依旧还是算不对4.4+12.8,巨汗……
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
绝地求喵 发表于 2017-11-19 18:16:41 | 显示全部楼层
计算机本身是用二级制表示数字的,在进行二进制转换时
0.4是不能转换为准确二进制的
知乎上有比较详细一点的回答,你可以看看

此处转载知乎用户:
为什么说浮点数缺乏精确性? python中浮点数运算问题 - 知乎用户的回答 - 知乎
https://www.zhihu.com/question/25457573/answer/30851062
回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
Refee  楼主| 发表于 2017-11-20 10:13:36 | 显示全部楼层
嗯嗯~~明白了,谢楼上二位!
回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
Refee  楼主| 发表于 2017-11-20 14:18:49 | 显示全部楼层
导入decimal再多写一点代码可以解决,'剑心无痕'的方法也能得出正确答案,区别是前者足够精确后者代码简单:
pic1.jpg


回复 支持 反对

使用道具 举报

0

主题

9

帖子

9

积分

贫民

积分
9
屋顶星008 发表于 2017-11-24 21:34:02 | 显示全部楼层
学问很多。
回复

使用道具 举报

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

本版积分规则

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