python 当输入的数值足够大时,结果不准确

img


while 1:
    n = float(input())
    print((1+1/n)**n)

浮点数本身就是有误差的
python浮点数能保留有效数字位数是有限的,只能保留15位有效数字
你输入16位9999999999999999
用float()会转成指数形式1e+16
也就是10000000000000000
1+1/10000000000000000
= 1.0000000000000001 有17位数字, 但是只能保留15位有效数字
就变成1.00000000000000, 也就等于 1.0 了. 1.0**n还是等于 1.0

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632