经过努力,哇,这个题终于过了;我先说一下做完这个题的一些总结吧
首先 使用了 eval 这个函数,还有 import math
abs(x) 返回x的绝对值
math.sqrt(x) 返回x的平方根
如果想进位的我们可以先乘以10000,然后取余判断,然后再处以10000
print("{:.3f}".format(x))
这个会打印x的小数点后三位(这个会进行进位的,如果小数点第4位大于等于0.5,则小数点第三位会进位)
e = math.e
pow(x,b) 会算出x的b次幂
接下来是最坑的一个地方
log1p(99) 这是算的ln(99)??,其实不是的这是算的ln(100),巨坑,我就卡在这个地方了
ln(100) = 4.60517018....
ln(99) = 4.598501345....
而log1p(99) = 4.60517018. == ln(100)
所以当我们需要算ln(x)的时候,我们得log1p(x-1),这样才能得到我们正确的答案
接下来是这个题的代码,代码简陋,希君勿笑
import math
import decimal
x = eval(input())
if abs(x) < 1:
result = math.sqrt(2-2*x)
# print(result)
# 0.0000453999
# result = result * 10000
# r = result % 10
# if r >= 5:
# result = result + 10
# result = result / 10000
print("f({:.3f})={:.3f}".format(x, result))
elif x <= -1:
result = math.e
result = pow(result,x)
# print(result)
# 0.0000453999
# result = result * 10000
# r = result % 10
# if r >= 5:
# result = result + 10
# result = result / 10000
print("f({:.3f})={:.3f}".format(x, result))
else:
result = math.cos(x) + x*x
result = result*1.0000/(2.5 + abs(x+math.log1p(99)))
# print((math.log1p(99)))
# result = result * 10000
# print(result)
# r = result % 10
# if r >= 5:
# result = result + 10
# result = result / 10000
# print("{:.4f}".format(result))
# print("{:.3f}".format(result))
print("f({:.3f})={:.3f}".format(x, result))
# c = 669 / 100
# print(c)
# print("{:.1f}".format(c))
exit(0)
转载:https://blog.csdn.net/weixin_44235647/article/details/101476243
查看评论