为了账号安全,请及时绑定邮箱和手机立即绑定

我这样写,为什么会出错?

我是这样想的,一个整数求平方根后,如果不是整数,那么应该是一个无限的小数,但计算机是有位数限制的,如下图的10,11的结果,

那么我开平方后再平方的话,理论上应该是得不到原来的整数的,但现在输出的结果为什么是这样的呢

https://img1.sycdn.imooc.com//5b1802000001db7608490463.jpg

正在回答

4 回答

你好,应该就是精度的问题,刚刚在自己电脑上测试了一下,测试10的时候却有小数,所以导致输出的是false

https://img1.sycdn.imooc.com//5b18e0ce0001716f03790101.jpg

0 回复 有任何疑惑可以回复我~
#1

不学习就挣不到钱 提问者

非常感谢!
2018-06-07 回复 有任何疑惑可以回复我~
#2

慕沐5586222 回复 不学习就挣不到钱 提问者

互相学习,你不提出来,我也不知道,感谢
2018-06-08 回复 有任何疑惑可以回复我~

print math.sqrt(33)*math.sqrt(33)==33 结果为true

0 回复 有任何疑惑可以回复我~

我也测试了一下,发现确实很奇怪,但把他们都转化为int或str类型就可以了,不知道具体的原因,求大神解答

print str(math.sqrt(10)*math.sqrt(10))=='10.0'        true

print int(math.sqrt(10)*math.sqrt(10))==10            true


0 回复 有任何疑惑可以回复我~

应该是精度问题。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

我这样写,为什么会出错?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信