鱼C论坛

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

[已解决]最新版教程第048讲动动手课后题遇到的问题

[复制链接]
发表于 2022-11-24 19:59:11 | 显示全部楼层 |阅读模式
10鱼币
动动手题目:

利用生成器定义一个支持浮点数的 frange() 函数,其功能与 range() 函数相仿

我的答案:
  1. def frange(b,a=0.0):
  2.     a=round(a,1)+0.0
  3.     b=round(b,1)+0.0
  4.    
  5.     while b-a>round(0,1) :
  6.         yield round(a,1)
  7.         a+=round(0.1,1)
复制代码


程序运行结果1:
  1. for i in frange(1):
  2.     print(i)

  3.    
  4. 0.0
  5. 0.1
  6. 0.2
  7. 0.3
  8. 0.4
  9. 0.5
  10. 0.6
  11. 0.7
  12. 0.8
  13. 0.9
  14. 1.0
复制代码



程序运行结果2:
  1. for i in frange(4,1):
  2.     print(i)

  3.    
  4. 1.0
  5. 1.1
  6. 1.2
  7. 1.3
  8. 1.4
  9. 1.5
  10. 1.6
  11. 1.7
  12. 1.8
  13. 1.9
  14. 2.0
  15. 2.1
  16. 2.2
  17. 2.3
  18. 2.4
  19. 2.5
  20. 2.6
  21. 2.7
  22. 2.8
  23. 2.9
  24. 3.0
  25. 3.1
  26. 3.2
  27. 3.3
  28. 3.4
  29. 3.5
  30. 3.6
  31. 3.7
  32. 3.8
  33. 3.9
复制代码



我的问题:
        在未作任何改变的情况下,第二种运行结果才符合题目要求。
        为什么第一种程序运行结果会输出1.0呢?
最佳答案
2022-11-24 19:59:12
本帖最后由 jhq999 于 2022-11-25 07:45 编辑
Loafer0 发表于 2022-11-25 07:37
哇,问题确实解决了,想问这是为什么呢

  1. def frange(b,a=0.0):
  2.     a=round(a,1)+0.0
  3.     b=round(b,1)+0.0
  4.    
  5.     while b-a>round(0,1) :
  6.         yield round(a,1)
  7.         a+=round(0.1,1)
  8.         print(a)#在这里加个print(a)就明白了应该是1.0却是0.9999999999,这就是浮点不精确的表现之一,因为不能表现成0.9无限循环
复制代码

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-24 19:59:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2022-11-25 07:45 编辑
Loafer0 发表于 2022-11-25 07:37
哇,问题确实解决了,想问这是为什么呢

  1. def frange(b,a=0.0):
  2.     a=round(a,1)+0.0
  3.     b=round(b,1)+0.0
  4.    
  5.     while b-a>round(0,1) :
  6.         yield round(a,1)
  7.         a+=round(0.1,1)
  8.         print(a)#在这里加个print(a)就明白了应该是1.0却是0.9999999999,这就是浮点不精确的表现之一,因为不能表现成0.9无限循环
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-24 22:23:55 | 显示全部楼层
  1. while b-round(a,1)>round(0,1) :
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-25 07:37:17 | 显示全部楼层

哇,问题确实解决了,想问这是为什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-11-25 07:47:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 20:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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