鱼C论坛

 找回密码
 立即注册
查看: 1961|回复: 10

40.2-4.02这么简单的题目python怎么不能正确解答

[复制链接]
发表于 2017-11-3 10:15:20 | 显示全部楼层 |阅读模式

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

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

x
if 40.2-4.02 == 36.18:
    print('ok')
我上5年级的儿子给我一道题目,我想用python解答,
40.2-4.02我用脚趾头算算也是36.18,但python居然说不等.
太奇怪了,这么简单的题目,万能的python居然不会做.
求大神解决.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-11-3 10:27:21 | 显示全部楼层
python取位問題

  1. if round(40.2-4.02,2)==36.18:
  2.             print('Ok')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 10:34:24 | 显示全部楼层
这个其实是一个浮点数的陷阱。所以计算机在处理浮点数的时候要特别小心。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-3 10:52:55 | 显示全部楼层
网上查了一下,这个问题还挺普遍的,不光光是python,其他编程语言也有这问题
可以用 decimal包解决,就是非常麻烦.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 11:33:44 | 显示全部楼层
精度问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 14:39:07 | 显示全部楼层
就是啊这是为什么
>>> 40.2-4.02
36.18000000000001
为什么结果后面有个1啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:34:04 | 显示全部楼层
bing_home 发表于 2017-11-3 14:39
就是啊这是为什么
>>> 40.2-4.02
36.18000000000001

很简单浮点数存储的时候不可能是整数的,比如0.1的浮点数在计算机里并不会存储为0.1而肯定是一个二进制数。那么就会存在一个精度的问题。因为不管怎么存计算机的浮点数永远是2**-n。n不可能无穷大。所以必定会出现这种个问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:36:43 | 显示全部楼层
colinshi 发表于 2017-11-3 15:34
很简单浮点数存储的时候不可能是整数的,比如0.1的浮点数在计算机里并不会存储为0.1而肯定是一个二进制数 ...

还是不能理解,你是说二进制数不能完整的表述36.18这个十进制数吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:38:03 | 显示全部楼层
colinshi 发表于 2017-11-3 15:34
很简单浮点数存储的时候不可能是整数的,比如0.1的浮点数在计算机里并不会存储为0.1而肯定是一个二进制数 ...

只能让一个二进制数无限接近于36.18这个数而不能完全等于36.18,我理解的对吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 15:39:12 | 显示全部楼层
bing_home 发表于 2017-11-3 15:38
只能让一个二进制数无限接近于36.18这个数而不能完全等于36.18,我理解的对吗

有小数点之后的是浮点数。浮点数计算机只用存在于接近值。当然如果你真好是2的-n次方的数,那么是可以正确表示的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-3 17:10:03 | 显示全部楼层
还有这种事
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-25 17:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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