最新版教程第048讲动动手课后题遇到的问题
动动手题目:利用生成器定义一个支持浮点数的 frange() 函数,其功能与 range() 函数相仿
我的答案:
def frange(b,a=0.0):
a=round(a,1)+0.0
b=round(b,1)+0.0
while b-a>round(0,1) :
yield round(a,1)
a+=round(0.1,1)
程序运行结果1:
for i in frange(1):
print(i)
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
程序运行结果2:
for i in frange(4,1):
print(i)
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3.0
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
我的问题:
在未作任何改变的情况下,第二种运行结果才符合题目要求。
为什么第一种程序运行结果会输出1.0呢?{:10_285:} 本帖最后由 jhq999 于 2022-11-25 07:45 编辑
Loafer0 发表于 2022-11-25 07:37
哇,问题确实解决了,想问这是为什么呢
def frange(b,a=0.0):
a=round(a,1)+0.0
b=round(b,1)+0.0
while b-a>round(0,1) :
yield round(a,1)
a+=round(0.1,1)
print(a)#在这里加个print(a)就明白了应该是1.0却是0.9999999999,这就是浮点不精确的表现之一,因为不能表现成0.9无限循环
while b-round(a,1)>round(0,1) : jhq999 发表于 2022-11-24 22:23
哇,问题确实解决了,想问这是为什么呢{:10_291:} jhq999 发表于 2022-11-24 19:59
{:10_254:}谢谢!
页:
[1]