浙江省python考试题目_2004年秋浙江省计算机等级考试二级C 编程题(2) (Python代码)...

博主分享了一段Python代码,用于计算大数阶乘和幂运算,但遇到精度问题。代码在部分测试数据上与C代码结果不符。寻求解决精度误差的方法,探讨可能的优化和精度提升技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解题思路:通过while循环进行计算

注意事项:python和其他语言在精度上的问题

参考代码:def fact(n):

r=1

while(not n == 0):

r=r*n

n=n-1

return r

def mypow(x,n):

r=1

while(not n ==0):

r=r*x

n=n-1

return r

list=[]

list=input().split()

x=float(list[0])

x1=int(float(list[0]))

if x-x1 ==0:

x=x1

n=int(list[1])

re=0

while(not n == 0):

re=re+((mypow((-1),n-1))*(mypow(x,n)))/fact(n)

n=n-1

print("{:.4f}".format(re))

该代码通过了50%的数据,然后我找了很久就是没找出来哪里出了问题,希望大神能帮忙解决一下,个人猜测是精度的问题,但是没找到合适的解决方法。

我输入66 66数据进行测试

别人的通过C代码的结果是:   -1125488733849575900000000000.0000

然后我这个python的结果是: -1125488733849575338155180032.0000

严重怀疑是精度出现了问题,但是没找到解决方法,求解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值