鱼C论坛

 找回密码
 立即注册
查看: 3007|回复: 6

[已解决]请问整除和除有什么区别,为什么返回结果不一致

[复制链接]
头像被屏蔽
发表于 2018-6-6 15:18:18 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-6 15:24:58 | 显示全部楼层
整除是没有小数点,取整数,除会有小数点
微信图片_20180606152437.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 15:39:43 | 显示全部楼层
楼上说的并不完整,你的感觉中 3.3 / / 1.1 == 3.0 才对是吧?
因为实际上,浮点数在计算机中是以近似值的方式来储存。
也就是实际上,它不是1.1 而是1.10000000000000008882

  1. >>> a = 1.1
  2. >>> print(a)
  3. 1.1
  4. >>> print("%.10f" % a)
  5. 1.1000000000
  6. >>> print("%.20f" % a)
  7. 1.10000000000000008882
  8. >>> print("%.30f" % a)
  9. 1.100000000000000088817841970013
  10. >>> print("%.50f" % a)
  11. 1.10000000000000008881784197001252323389053344726562
复制代码


我们打印出来1.1后面的十几位数发现,它其实根本不是1.1

所以这也就可以理解,为何 3.3 / 1.1 == 2.999999999
因为2.9999999 ,//地板除操作符是直接舍去小数位,不进行四舍五入,所以等于 2.0

如果觉得我的答案有帮助,请设置为最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 15:40:18 | 显示全部楼层
lambertang 发表于 2018-6-6 15:24
整除是没有小数点,取整数,除会有小数点

兄弟你解释不对呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 15:45:54 | 显示全部楼层
  1. >>> print(6.6 // 3.3)
  2. 2.0
  3. >>> print(6.6 // 1.1)
  4. 5.0
复制代码


不止是3.3 除以 1.1 会出现这样的问题 6.6等等都会出现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2018-6-6 16:10:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-6 16:24:17 | 显示全部楼层    本楼为最佳答案   
学学看看 发表于 2018-6-6 16:10
那只有浮点型或者分数是这样存储的么?整数都是OK的?

没有分数这种东西在计算机里,浮点型,双精度浮点型(double) 都是这样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 23:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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