鱼C论坛

 找回密码
 立即注册
查看: 1580|回复: 12

[已解决]Python第22讲课后第一题

[复制链接]
发表于 2020-3-4 15:23:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ArielK 于 2020-3-4 19:01 编辑
def power(x,y):
    if y > 0:  
        return x * power(x,y-1)
    elif y ==0:
        return 1
    else:
        return (1/x) * power(x,y+1)
    
number1 = int(input("请输入一个数:"))
number2 = int(input("请输入幂次数:"))
print(power(number1,number2))
以上是萌新的我写的,当我运行之后为啥值会变成这样,求讲解一下
不胜感激!

                               
登录/注册后可看大图

改写成这样之后就不会出现浮点数精度问题了是为啥呢:
def exp(x,y):
    if y > 0:
        return x * exp(x,y-1)
    elif y == 0:
        return 1
    else:
        y = y * (-1)
        return 1 / (x * exp(x,y-1))

                               
登录/注册后可看大图



最佳答案
2020-3-4 17:40:29
ArielK 发表于 2020-3-4 17:38
但是为什么会有后面这么长的数字呢,5的-2次方不就应该等于0.04吗;
为啥这样算出来会是0.0400000000000 ...

因为Python是不会自己计算小数位数的
它默认打印出的是最长的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-4 15:24:57 | 显示全部楼层
用图床:
http://imgchr.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 15:48:08 | 显示全部楼层
qiuyouzhi 发表于 2020-3-4 15:24
用图床:
http://imgchr.com

重新插入图片啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 17:21:25 | 显示全部楼层
ArielK 发表于 2020-3-4 15:48
重新插入图片啦~

def power(x,y):
    if y > 0:  
        return x * power(x,y-1)
    elif y ==0:
        return 1
    else:
        return (1/x) * power(x,y+1)
    
number1 = int(input("请输入一个数:"))
number2 = int(input("请输入幂次数:"))
a = power(number1,number2)
print("%.2f" % a)
如果不想要后面的一长串,将他截断就好了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 17:38:42 | 显示全部楼层
qiuyouzhi 发表于 2020-3-4 17:21
如果不想要后面的一长串,将他截断就好了~

但是为什么会有后面这么长的数字呢,5的-2次方不就应该等于0.04吗;
为啥这样算出来会是0.040000000000001呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 17:40:29 | 显示全部楼层    本楼为最佳答案   
ArielK 发表于 2020-3-4 17:38
但是为什么会有后面这么长的数字呢,5的-2次方不就应该等于0.04吗;
为啥这样算出来会是0.0400000000000 ...

因为Python是不会自己计算小数位数的
它默认打印出的是最长的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 18:03:02 | 显示全部楼层
ArielK 发表于 2020-3-4 17:38
但是为什么会有后面这么长的数字呢,5的-2次方不就应该等于0.04吗;
为啥这样算出来会是0.0400000000000 ...

这是著名的 “浮点数精度问题”,所有的编程语言都有这个问题。不用在意。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 18:51:05 | 显示全部楼层
zltzlt 发表于 2020-3-4 18:03
这是著名的 “浮点数精度问题”,所有的编程语言都有这个问题。不用在意。

大概给我们讲讲吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 18:52:48 | 显示全部楼层
wuqramy 发表于 2020-3-4 18:51
大概给我们讲讲吧

自己百度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 18:53:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 18:53:10 | 显示全部楼层

                               
登录/注册后可看大图

这样子又不会出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-4 18:54:43 | 显示全部楼层
有兴趣的可以看看:
https://blog.csdn.net/xiaochendefendoushi/article/details/81082797
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-4 19:03:48 | 显示全部楼层

更新了一下,换了一种方法后就不这样了。这是为啥呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 03:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表