|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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条件小于等于多少,就输出多少。感觉应该是最后的循环里有问题
跪谢各位大佬
答案那个是小于,
浮点数和浮点数比较是不推荐判断他们是否相等的,因为你看着相等,在计算机中存储时是不相等的,涉及精度了
|
|