马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 GlacierGao 于 2021-3-10 16:58 编辑
遇到了一道小题,题目是这样的:
工作日模式要努力到什么水平,才能与每天努力1%一样?
A君: 一年365天,每天进步1%,不停歇
B君: 一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?
标答的代码是这样的:def dayUP(df):
dayup = 1.0
for i in range(365):
if i % 7 in [6, 0]:
dayup = dayup * (1 - 0.01)
else:
dayup = dayup * (1 + df)
return dayup
dayfactor = 0.01
while (dayUP(dayfactor)<37.78):
dayfactor += 0.001
print("每天的努力参数是: %.3f."%dayfactor)
(37.78就是算出来的A君的“努力成果”,标答结果是0.019)
想对标答稍作改动,我的答案是这样的:def dayup(x):
dream = 1
for i in range(365):
if i % 7 in [6, 0]:
dream *= 0.99
else:
dream *= (x + 1)
return dream
a = 1
for i in range(365):
a *= 1.01
df = 0.01
while df <= 0.03:
if dayup(df) == a:
break
else:
df += 0.001
print('每天的努力参数是: %.3f' % df)
但是结果出来是0.030;我试了很多遍,while条件小于等于多少,就输出多少。感觉应该是最后的循环里有问题
跪谢各位大佬
答案那个是小于,
浮点数和浮点数比较是不推荐判断他们是否相等的,因为你看着相等,在计算机中存储时是不相等的,涉及精度了
|